Материал из Tkabber Wiki
Официальные старпаки Ткаббера в данный момент не поддерживают сжатие, даже несмотря на наличие закладки "SSL & Сжатие" и пункта "Сжатие" там, если таковая есть в вашем старпаке.
Наличие этой закладки является багом, и работать сжатие у вас не будет — Ткаббер будет "падать" с ошибкой синтаксиса команды zlib:
wrong # args: should be "zlib option data ?...?"
Объясним сущность "феномена":
- Существует несколько реализаций алгоритма zlib для Tcl;
- К сожалению, их авторы — все, как один — назвали свои реализации "zlib", а именно: все подобные пакеты называются "zlib" и команда тикля, которую они реализуют, называется "zlib", и она создаётся в корневом пространстве имён.
- Любой тиклькит (и, соответственно, старкит и старпак) содержит собственный пакет, названный — а как же иначе! — "zlib". Этот пакет необходим для работы старкитов/старпаков, так как данные в них сжимаются при помощи zlib.
- Именно этот пакет загружается в "непатченном" старките/старпаке, когда
Ткаббер выполняет команду "найти и загрузить пакет «zlib»" (
package require zlib
). Поскольку узнать что это — "тот самый" zlib нельзя без серьёзных извращений, Ткаббер просто считает, что раз пакет zlib загружен успешно, то сжатие доступно (и соответствующим образом отображает этот факт в окне логина). - Но для работы сжатия в XMPP Ткабберу нужен другой пакет zlib! Оба этих пакета предоставляют одну и ту же команду тикля — "zlib", но у разных её версий разный синтаксис — отсюда и ошибки тикля при попытке "завести" сжатие на "штатном" старпаке.
- "Скрещивание" нужного для сжатия zlib и штатного для тиклькита — не совсем тривиальная операция: она требует правки исходников zlib, пересборки этого пакета, правки кода Ткаббера и последующей пересборки старпака. Пока что эта операция была выполнена только для Win32-версии старпака, так как именно пользователи Windows просили эту "фичу", а единственным старпаком с такой поддержкой стал неофициальный старпак 0.9.9 под win32.
"Крутилки" интерфейса пользователя для управления сжатием в некоторых версиях старпаков/старкитов фигурируют из-за того, что Ткаббер видит "неправильный" пакет zlib (от тиклькита), и ему не объяснено, что на него не нужно обращать внимание.
Подытожим:
- Сжатие в старкитах/старпаках не работает, хотя внешне иногда выглядит так, как будто бы оно "должно".
- Если вам нужно сжатие в Ткаббере, вам придётся воспользоваться "обычным" дистрибутивом Ткаббера с внешними модулями zlib и tclmore или Ткаббер-паком для Win32.