]> granicus.if.org Git - ejabberd/commitdiff
Replace the full ejabberd_zlib into a simple exmpp_compress interface (EJAB-991)
authorBadlop <badlop@process-one.net>
Fri, 2 Sep 2011 23:04:22 +0000 (01:04 +0200)
committerBadlop <badlop@process-one.net>
Fri, 2 Sep 2011 23:04:33 +0000 (01:04 +0200)
12 files changed:
README
doc/guide.tex
src/Makefile.in
src/Makefile.win32
src/acinclude.m4
src/configure.ac
src/ejabberd.app
src/ejabberd_zlib.erl [new file with mode: 0644]
src/ejabberd_zlib/Makefile.in [deleted file]
src/ejabberd_zlib/Makefile.win32 [deleted file]
src/ejabberd_zlib/ejabberd_zlib.erl [deleted file]
src/ejabberd_zlib/ejabberd_zlib_drv.c [deleted file]

diff --git a/README b/README
index 6e4078b6d9030dbbec499e3cde2c3cdb646c2c4c..b9942e4f36393204ef231cddd5499c1499992e1e 100644 (file)
--- a/README
+++ b/README
@@ -12,8 +12,6 @@ To compile ejabberd you need:
    Avoid R14A and R14B.
  - exmpp 0.9.6 or higher
  - OpenSSL 0.9.8 or higher, for STARTTLS, SASL and SSL encryption.
- - Zlib 1.2.3 or higher, for Stream Compression support
-   (XEP-0138). Optional.
  - Erlang mysql library. Optional. MySQL authentication/storage.
  - Erlang pgsql library. Optional. PostgreSQL authentication/storage.
  - PAM library. Optional. For Pluggable Authentication Modules (PAM).
index 47bed9f727b63e1f09553b485350f875b3de0b0b..f329ac9d92fb683018d95073bd43e7714de7ba77 100644 (file)
@@ -318,7 +318,6 @@ To compile \ejabberd{} on a `Unix-like' operating system, you need:
   Don't use R14A or R14B because \footahref{http://www.erlang.org/cgi-bin/ezmlm-cgi/4/54598}{they have a bug}.
 \item exmpp 0.9.6 or higher
 \item OpenSSL 0.9.8 or higher, for STARTTLS, SASL and SSL encryption.
-\item Zlib 1.2.3 or higher, for Stream Compression support (\xepref{0138}). Optional.
 \item Erlang mysql library. Optional. For MySQL authentication or storage. See section \ref{compilemysql}.
 \item Erlang pgsql library. Optional. For PostgreSQL authentication or storage. See section \ref{compilepgsql}.
 \item PAM library. Optional. For Pluggable Authentication Modules (PAM). See section \ref{pam}.
@@ -524,7 +523,6 @@ To compile \ejabberd{} on a Microsoft Windows system, you need:
 \item \footahref{http://support.process-one.net/doc/display/EXMPP}{exmpp 0.9.5 or higher}
 \item \footahref{http://www.slproweb.com/products/Win32OpenSSL.html}{Shining Light OpenSSL 0.9.8d or higher}
 (to enable SSL connections)
-\item \footahref{http://www.zlib.net/}{Zlib 1.2.3 or higher}
 \end{itemize}
 
 
@@ -535,8 +533,6 @@ We assume that we will try to put as much library as possible into \verb|C:\sdk\
 \begin{enumerate}
 \item Install Erlang emulator (for example, into \verb|C:\sdk\erl5.6.5|).
 \item Install OpenSSL in \verb|C:\sdk\OpenSSL| and add \verb|C:\sdk\OpenSSL\lib\VC| to your path or copy the binaries to your system directory.
-\item Install ZLib in \verb|C:\sdk\gnuWin32|. Copy
-  \verb|C:\sdk\GnuWin32\bin\zlib1.dll| to your system directory.
 \item Make sure the you can access Erlang binaries from your path. For example: \verb|set PATH=%PATH%;"C:\sdk\erl5.6.5\bin"|
 \item Depending on how you end up actually installing the library you might need to check and tweak the paths in the file configure.erl.
 \item While in the directory \verb|ejabberd\src| run:
index 83668c0f1d3b83bfc14c712689b6452c1fa9732a..b8430f9663e432351b34589711df82fdb57e8434 100644 (file)
@@ -72,7 +72,7 @@ endif
 prefix = @prefix@
 exec_prefix = @exec_prefix@
 
-SUBDIRS = stun @mod_pubsub@ @mod_muc@ @mod_proxy65@ @eldap@ @pam@ @web@ @tls@ @odbc@ @ejabberd_zlib@
+SUBDIRS = stun @mod_pubsub@ @mod_muc@ @mod_proxy65@ @eldap@ @pam@ @web@ @tls@ @odbc@
 ERLSHLIBS =
 ERLBEHAVS = cyrsasl.erl gen_mod.erl p1_fsm.erl
 SOURCES_ALL = $(wildcard *.erl)
index fce92a1b0a965c8c4dcb9a999b038104d379cc01..a396559455e1fb0d5805d5433cfce51bd3c7b6b9 100644 (file)
@@ -69,9 +69,6 @@ release : build release_clean
        mkdir $(SRC_DIR)\tls
        copy tls\*.erl $(SRC_DIR)\tls
        copy tls\*.c $(SRC_DIR)\tls
-       mkdir $(SRC_DIR)\ejabberd_zlib
-       copy ejabberd_zlib\*.erl $(SRC_DIR)\ejabberd_zlib
-       copy ejabberd_zlib\*.c $(SRC_DIR)\ejabberd_zlib
        mkdir $(SRC_DIR)\web
        copy web\*.erl $(SRC_DIR)\web
        mkdir $(SRC_DIR)\odbc
@@ -103,8 +100,6 @@ all-recursive :
        nmake -nologo -f Makefile.win32
        cd ..\tls
        nmake -nologo -f Makefile.win32
-       cd ..\ejabberd_zlib
-       nmake -nologo -f Makefile.win32
        cd ..\web
        nmake -nologo -f Makefile.win32
        cd ..\odbc
@@ -142,8 +137,6 @@ clean-recursive :
        nmake -nologo -f Makefile.win32 clean
        cd ..\tls
        nmake -nologo -f Makefile.win32 clean
-       cd ..\ejabberd_zlib
-       nmake -nologo -f Makefile.win32 clean
        cd ..\web
        nmake -nologo -f Makefile.win32 clean
        cd ..\odbc
index 8c18b3e42aa1685d2a074ed9cc52ea92f3230a2b..513520435b67aa9f730be5c8d70b056212d27042 100644 (file)
@@ -1,39 +1,3 @@
-AC_DEFUN([AM_WITH_ZLIB],
-[ AC_ARG_WITH(zlib,
-             [AC_HELP_STRING([--with-zlib=PREFIX], [prefix where zlib is installed])])
-
-if test x"$ejabberd_zlib" != x; then
-  ZLIB_CFLAGS=
-  ZLIB_LIBS=
-       if test x"$with_zlib" != x; then
-               ZLIB_CFLAGS="-I$with_zlib/include"
-               ZLIB_LIBS="-L$with_zlib/lib"
-       fi
-
-       AC_CHECK_LIB(z, gzgets,
-                    [ ZLIB_LIBS="$ZLIB_LIBS -lz"
-                      zlib_found=yes ],
-                    [ zlib_found=no ],
-                    "$ZLIB_LIBS")
-       if test $zlib_found = no; then
-               AC_MSG_ERROR([Could not find development files of zlib library. Install them or disable `ejabberd_zlib' with: --disable-ejabberd_zlib])
-       fi
-       zlib_save_CFLAGS="$CFLAGS"
-       CFLAGS="$CFLAGS $ZLIB_CFLAGS"
-       zlib_save_CPPFLAGS="$CFLAGS"
-       CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS"
-       AC_CHECK_HEADERS(zlib.h, , zlib_found=no)
-       if test $zlib_found = no; then
-               AC_MSG_ERROR([Could not find zlib.h. Install it or disable `ejabberd_zlib' with: --disable-ejabberd_zlib])
-       fi
-       CFLAGS="$zlib_save_CFLAGS"
-       CPPFLAGS="$zlib_save_CPPFLAGS"
-
-  AC_SUBST(ZLIB_CFLAGS)
-  AC_SUBST(ZLIB_LIBS)
-fi
-])
-
 AC_DEFUN([AM_WITH_PAM],
 [ AC_ARG_WITH(pam,
              [AC_HELP_STRING([--with-pam=PREFIX], [prefix where PAM is installed])])
index a902c3aab982b22f0b011bb589bfd7234cca6bd4..b52211f37b06d0ad3b614f6761f1c67fe8d86325 100644 (file)
@@ -36,10 +36,6 @@ AC_MOD_ENABLE(odbc, no)
 AC_MOD_ENABLE(tls, yes)
 AC_MOD_ENABLE(web, yes)
 
-AC_MOD_ENABLE(ejabberd_zlib, yes)
-#locating zlib
-AM_WITH_ZLIB
-
 AC_MOD_ENABLE(pam, no)
 #locating PAM
 AM_WITH_PAM
@@ -107,8 +103,7 @@ AC_CONFIG_FILES([Makefile
                  $make_web
                  stun/Makefile
                  $make_tls
-                 $make_odbc
-                 $make_ejabberd_zlib])
+                 $make_odbc])
 #openssl
 AM_WITH_OPENSSL
 # If ssl is kerberized it need krb5.h
index 0b524537efbbcff7629c888ca9dcca34872af93b..5f93cb1a711b562f9c0a9b9bf016132e586686cb 100644 (file)
@@ -48,7 +48,6 @@
             ejabberd_update,
             ejabberd_web_admin,
             ejabberd_web,
-            ejabberd_zlib,
             ejd2odbc,
             eldap,
             eldap_filter,
diff --git a/src/ejabberd_zlib.erl b/src/ejabberd_zlib.erl
new file mode 100644 (file)
index 0000000..b67784f
--- /dev/null
@@ -0,0 +1,99 @@
+%%%----------------------------------------------------------------------
+%%% File    : ejabberd_zlib.erl
+%%% Author  : Alexey Shchepin <alexey@process-one.net>
+%%% Purpose : Interface to exmpp_compress
+%%% Created : 19 Jan 2006 by Alexey Shchepin <alexey@process-one.net>
+%%%
+%%%
+%%% ejabberd, Copyright (C) 2002-2011   ProcessOne
+%%%
+%%% This program is free software; you can redistribute it and/or
+%%% modify it under the terms of the GNU General Public License as
+%%% published by the Free Software Foundation; either version 2 of the
+%%% License, or (at your option) any later version.
+%%%
+%%% This program is distributed in the hope that it will be useful,
+%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%%% General Public License for more details.
+%%%
+%%% You should have received a copy of the GNU General Public License
+%%% along with this program; if not, write to the Free Software
+%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+%%% 02111-1307 USA
+%%%
+%%%----------------------------------------------------------------------
+
+-module(ejabberd_zlib).
+-author('alexey@process-one.net').
+
+-export([start/0, start_link/0,
+        enable_zlib/2, disable_zlib/1,
+        send/2,
+        recv/2, recv/3, recv_data/2,
+        setopts/2,
+        get_sockmod/1,
+        sockname/1, peername/1,
+        controlling_process/2,
+        close/1]).
+
+-define(DEFLATE, 1).
+-define(INFLATE, 2).
+
+start() ->
+    exmpp_compress:start().
+
+start_link() ->
+    exmpp_compress:start_link().
+
+
+enable_zlib(SockMod, Socket) ->
+    try
+       ZlibSock = exmpp_compress:enable_compression({SockMod, Socket},
+                                                    [{compress_method, zlib}]),
+       {ok, ZlibSock}
+    catch
+       Exception ->
+           {error, Exception}
+    end.
+
+disable_zlib(ZlibSock) ->
+    exmpp_compress:disable_compression(ZlibSock).
+
+recv(Socket, Length) ->
+    recv(Socket, Length, infinity).
+recv(ZlibSock, _Length, Timeout) ->
+    exmpp_compress:recv(ZlibSock, Timeout).
+
+recv_data(ZlibSock, Packet) ->
+    exmpp_compress:recv_data(ZlibSock, Packet).
+
+send(ZlibSock, Packet) ->
+    exmpp_compress:send(ZlibSock, Packet).
+
+
+setopts(ZlibSock, Opts) ->
+    exmpp_compress:setopts(ZlibSock, Opts).
+
+%% Copied from exmpp/src/core/exmpp_compress.erl
+-record(compress_socket, {socket,
+                          packet_mode = binary,
+                          port
+                         }).
+
+get_sockmod(#compress_socket{socket = {SockMod, _Port}}) ->
+    SockMod.
+
+sockname(ZlibSock) ->
+    exmpp_compress:sockname(ZlibSock).
+
+peername(ZlibSock) ->
+    exmpp_compress:peername(ZlibSock).
+
+controlling_process(ZlibSock, Pid) ->
+    exmpp_compress:controlling_process(ZlibSock, Pid).
+
+close(ZlibSock) ->
+    exmpp_compress:close(ZlibSock).
+
+
diff --git a/src/ejabberd_zlib/Makefile.in b/src/ejabberd_zlib/Makefile.in
deleted file mode 100644 (file)
index 860dfe1..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-
-ERLANG_CFLAGS = @ERLANG_CFLAGS@
-ERLANG_LIBS = @ERLANG_LIBS@
-
-# Assume Linux-style dynamic library flags
-DYNAMIC_LIB_CFLAGS = -fpic -shared
-ifeq ($(shell uname),Darwin)
-    DYNAMIC_LIB_CFLAGS = -fPIC -bundle -flat_namespace -undefined suppress
-endif
-ifeq ($(shell uname),SunOs)
-    DYNAMIC_LIB_CFLAGS = -KPIC -G -z text
-endif
-
-EFLAGS += -I ..
-EFLAGS += -pz ..
-
-# make debug=true to compile Erlang module with debug informations.
-ifdef debug
-       EFLAGS+=+debug_info +export_all
-endif
-
-ERLSHLIBS = ../ejabberd_zlib_drv.so
-OUTDIR = ..
-SOURCES = $(wildcard *.erl)
-BEAMS = $(addprefix $(OUTDIR)/,$(SOURCES:.erl=.beam))
-
-all:    $(BEAMS) $(ERLSHLIBS)
-
-$(OUTDIR)/%.beam:       %.erl
-       @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
-
-#all:  $(ERLSHLIBS)
-#      erl -s make all report "{outdir, \"..\"}" -noinput -s erlang halt
-
-$(ERLSHLIBS):  ../%.so:        %.c
-       $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) \
-               $(subst ../,,$(subst .so,.c,$@)) \
-               $(LIBS) \
-               $(ZLIB_LIBS) \
-               $(ZLIB_CFLAGS) \
-               $(ERLANG_LIBS) \
-               $(ERLANG_CFLAGS) \
-               -o $@ \
-               $(DYNAMIC_LIB_CFLAGS)
-
-clean:
-       rm -f $(BEAMS) $(ERLSHLIBS)
-
-distclean: clean
-       rm -f Makefile
-
-TAGS:
-       etags *.erl
-
-
-DEVDOCDIR=../../doc/devdoc
-DDTDIR=..
-HTMLS = $(SOURCES:%.erl=../../doc/devdoc/%.html)
-ERLHTMLS = $(SOURCES:%.erl=../../doc/devdoc/%.erl.html)
-SVGS = $(SOURCES:%.erl=../../doc/devdoc/%.svg)
-
-devdoc: $(HTMLS) $(ERLHTMLS) $(SVGS)
-
-$(DEVDOCDIR)/%.erl.html: %.erl
-       @ERL@ -noshell -pa $(DEVDOCDIR) -run escobar_run file $< $(DDTDIR) -s init stop
-
-$(DEVDOCDIR)/%.html: %.erl
-       @ERL@ -noshell -run edoc_run file $< \
-       '[{dir,"$(DDTDIR)"},{packages,false},{todo,true},{private,true},{def,{vsn,"$(VSN)"}},{stylesheet,"process-one.css"},{overview,"overview.edoc"}]' -s init stop
-
-$(DEVDOCDIR)/%.svg: %.erl
-       @ERL@ -noshell -pa $(DEVDOCDIR) -run funrelg dir $< $(DDTDIR) -s init stop
-
diff --git a/src/ejabberd_zlib/Makefile.win32 b/src/ejabberd_zlib/Makefile.win32
deleted file mode 100644 (file)
index c13383f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-
-include ..\Makefile.inc
-
-EFLAGS = -I .. -pz ..
-
-OUTDIR = ..
-BEAMS = ..\ejabberd_zlib.beam
-
-SOURCE = ejabberd_zlib_drv.c
-OBJECT = ejabberd_zlib_drv.o
-DLL    = $(OUTDIR)\ejabberd_zlib_drv.dll
-
-ALL : $(DLL) $(BEAMS)
-
-CLEAN :
-       -@erase $(DLL)
-       -@erase $(OUTDIR)\ejabberd_zlib_drv.exp
-       -@erase $(OUTDIR)\ejabberd_zlib_drv.lib
-       -@erase $(OBJECT)
-       -@erase $(BEAMS)
-
-$(OUTDIR)\ejabberd_zlib.beam : ejabberd_zlib.erl
-       erlc -W $(EFLAGS) -o $(OUTDIR) ejabberd_zlib.erl
-
-CC=cl.exe
-CC_FLAGS=-nologo -D__WIN32__ -DWIN32 -DWINDOWS -D_WIN32 -DNT -MD -Ox -I"$(ERLANG_DIR)\usr\include" -I"$(EI_DIR)\include" -I"$(ZLIB_DIR)\include"
-
-LD=link.exe
-LD_FLAGS=-release -nologo -incremental:no -dll "$(EI_DIR)\lib\ei_md.lib" "$(EI_DIR)\lib\erl_interface_md.lib" "$(ZLIB_LIB)" MSVCRT.LIB kernel32.lib advapi32.lib gdi32.lib user32.lib comctl32.lib comdlg32.lib shell32.lib
-
-$(DLL) : $(OBJECT)
-       $(LD) $(LD_FLAGS) -out:$(DLL) $(OBJECT)
-
-$(OBJECT) : $(SOURCE)
-       $(CC) $(CC_FLAGS) -c -Fo$(OBJECT) $(SOURCE) 
-
diff --git a/src/ejabberd_zlib/ejabberd_zlib.erl b/src/ejabberd_zlib/ejabberd_zlib.erl
deleted file mode 100644 (file)
index dbfd57a..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-%%%----------------------------------------------------------------------
-%%% File    : ejabberd_zlib.erl
-%%% Author  : Alexey Shchepin <alexey@process-one.net>
-%%% Purpose : Interface to zlib
-%%% Created : 19 Jan 2006 by Alexey Shchepin <alexey@process-one.net>
-%%%
-%%%
-%%% ejabberd, Copyright (C) 2002-2011   ProcessOne
-%%%
-%%% This program is free software; you can redistribute it and/or
-%%% modify it under the terms of the GNU General Public License as
-%%% published by the Free Software Foundation; either version 2 of the
-%%% License, or (at your option) any later version.
-%%%
-%%% This program is distributed in the hope that it will be useful,
-%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
-%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%%% General Public License for more details.
-%%%
-%%% You should have received a copy of the GNU General Public License
-%%% along with this program; if not, write to the Free Software
-%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-%%% 02111-1307 USA
-%%%
-%%%----------------------------------------------------------------------
-
--module(ejabberd_zlib).
--author('alexey@process-one.net').
-
--behaviour(gen_server).
-
--export([start/0, start_link/0,
-        enable_zlib/2, disable_zlib/1,
-        send/2,
-        recv/2, recv/3, recv_data/2,
-        setopts/2,
-        sockname/1, peername/1,
-        get_sockmod/1,
-        controlling_process/2,
-        close/1]).
-
-%% Internal exports, call-back functions.
--export([init/1,
-        handle_call/3,
-        handle_cast/2,
-        handle_info/2,
-        code_change/3,
-        terminate/2]).
-
--define(DEFLATE, 1).
--define(INFLATE, 2).
-
--record(zlibsock, {sockmod, socket, zlibport}).
-
-start() ->
-    gen_server:start({local, ?MODULE}, ?MODULE, [], []).
-
-start_link() ->
-    gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
-
-init([]) ->
-    case erl_ddll:load_driver(ejabberd:get_so_path(), ejabberd_zlib_drv) of
-       ok -> ok;
-       {error, already_loaded} -> ok
-    end,
-    Port = open_port({spawn, "ejabberd_zlib_drv"}, [binary]),
-    {ok, Port}.
-
-
-%%% --------------------------------------------------------
-%%% The call-back functions.
-%%% --------------------------------------------------------
-
-handle_call(_, _, State) ->
-    {noreply, State}.
-
-handle_cast(_, State) ->
-    {noreply, State}.
-
-handle_info({'EXIT', Port, Reason}, Port) ->
-    {stop, {port_died, Reason}, Port};
-
-handle_info({'EXIT', _Pid, _Reason}, Port) ->
-    {noreply, Port};
-
-handle_info(_, State) ->
-    {noreply, State}.
-
-code_change(_OldVsn, State, _Extra) ->
-    {ok, State}.
-
-terminate(_Reason, Port) ->
-    Port ! {self, close},
-    ok.
-
-
-enable_zlib(SockMod, Socket) ->
-    case erl_ddll:load_driver(ejabberd:get_so_path(), ejabberd_zlib_drv) of
-       ok -> ok;
-       {error, already_loaded} -> ok
-    end,
-    Port = open_port({spawn, "ejabberd_zlib_drv"}, [binary]),
-    {ok, #zlibsock{sockmod = SockMod, socket = Socket, zlibport = Port}}.
-
-disable_zlib(#zlibsock{sockmod = SockMod, socket = Socket, zlibport = Port}) ->
-    port_close(Port),
-    {SockMod, Socket}.
-
-recv(Socket, Length) ->
-    recv(Socket, Length, infinity).
-recv(#zlibsock{sockmod = SockMod, socket = Socket} = ZlibSock,
-     Length, Timeout) ->
-    case SockMod:recv(Socket, Length, Timeout) of
-       {ok, Packet} ->
-           recv_data(ZlibSock, Packet);
-       {error, _Reason} = Error ->
-           Error
-    end.
-
-recv_data(#zlibsock{sockmod = SockMod, socket = Socket} = ZlibSock, Packet) ->
-    case SockMod of
-       gen_tcp ->
-           recv_data2(ZlibSock, Packet);
-       _ ->
-           case SockMod:recv_data(Socket, Packet) of
-               {ok, Packet2} ->
-                   recv_data2(ZlibSock, Packet2);
-               Error ->
-                   Error
-           end
-    end.
-
-recv_data2(ZlibSock, Packet) ->
-    case catch recv_data1(ZlibSock, Packet) of
-       {'EXIT', Reason} ->
-           {error, Reason};
-       Res ->
-           Res
-    end.
-
-recv_data1(#zlibsock{zlibport = Port} = _ZlibSock, Packet) ->
-    case port_control(Port, ?INFLATE, Packet) of
-       <<0, In/binary>> ->
-           {ok, In};
-       <<1, Error/binary>> ->
-           {error, binary_to_list(Error)}
-    end.
-
-send(#zlibsock{sockmod = SockMod, socket = Socket, zlibport = Port},
-     Packet) ->
-    case port_control(Port, ?DEFLATE, Packet) of
-       <<0, Out/binary>> ->
-           SockMod:send(Socket, Out);
-       <<1, Error/binary>> ->
-           {error, binary_to_list(Error)}
-    end.
-
-
-setopts(#zlibsock{sockmod = SockMod, socket = Socket}, Opts) ->
-    case SockMod of
-       gen_tcp ->
-           inet:setopts(Socket, Opts);
-       _ ->
-           SockMod:setopts(Socket, Opts)
-    end.
-
-sockname(#zlibsock{sockmod = SockMod, socket = Socket}) ->
-    case SockMod of
-       gen_tcp ->
-           inet:sockname(Socket);
-       _ ->
-           SockMod:sockname(Socket)
-    end.
-
-get_sockmod(#zlibsock{sockmod = SockMod}) ->
-    SockMod.
-
-peername(#zlibsock{sockmod = SockMod, socket = Socket}) ->
-    case SockMod of
-       gen_tcp ->
-           inet:peername(Socket);
-       _ ->
-           SockMod:peername(Socket)
-    end.
-
-controlling_process(#zlibsock{sockmod = SockMod, socket = Socket}, Pid) ->
-    SockMod:controlling_process(Socket, Pid).
-
-close(#zlibsock{sockmod = SockMod, socket = Socket, zlibport = Port}) ->
-    SockMod:close(Socket),
-    port_close(Port).
-
-
diff --git a/src/ejabberd_zlib/ejabberd_zlib_drv.c b/src/ejabberd_zlib/ejabberd_zlib_drv.c
deleted file mode 100644 (file)
index f71b4d6..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * ejabberd, Copyright (C) 2002-2011   ProcessOne
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307 USA
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <erl_driver.h>
-#include <zlib.h>
-
-
-#define BUF_SIZE 1024
-
-typedef struct {
-      ErlDrvPort port;
-      z_stream *d_stream;
-      z_stream *i_stream;
-} ejabberd_zlib_data;
-
-
-static ErlDrvData ejabberd_zlib_drv_start(ErlDrvPort port, char *buff)
-{
-   ejabberd_zlib_data *d =
-      (ejabberd_zlib_data *)driver_alloc(sizeof(ejabberd_zlib_data));
-   d->port = port;
-
-   d->d_stream = (z_stream *)malloc(sizeof(z_stream));
-
-   d->d_stream->zalloc = (alloc_func)0;
-   d->d_stream->zfree = (free_func)0;
-   d->d_stream->opaque = (voidpf)0;
-
-   deflateInit(d->d_stream, Z_DEFAULT_COMPRESSION);
-
-   d->i_stream = (z_stream *)malloc(sizeof(z_stream));
-
-   d->i_stream->zalloc = (alloc_func)0;
-   d->i_stream->zfree = (free_func)0;
-   d->i_stream->opaque = (voidpf)0;
-
-   inflateInit(d->i_stream);
-
-   set_port_control_flags(port, PORT_CONTROL_FLAG_BINARY);
-
-   return (ErlDrvData)d;
-}
-
-static void ejabberd_zlib_drv_stop(ErlDrvData handle)
-{
-   ejabberd_zlib_data *d = (ejabberd_zlib_data *)handle;
-
-   deflateEnd(d->d_stream);
-   free(d->d_stream);
-
-   inflateEnd(d->i_stream);
-   free(d->i_stream);
-
-   driver_free((char *)handle);
-}
-
-
-#define DEFLATE 1
-#define INFLATE 2
-
-#define die_unless(cond, errstr)                               \
-        if (!(cond))                                           \
-        {                                                      \
-           rlen = strlen(errstr) + 1;                          \
-           b = driver_realloc_binary(b, rlen);                 \
-           b->orig_bytes[0] = 1;                               \
-           strncpy(b->orig_bytes + 1, errstr, rlen - 1);       \
-           *rbuf = (char *)b;                                  \
-           return rlen;                                        \
-        }
-
-
-static int ejabberd_zlib_drv_control(ErlDrvData handle,
-                                    unsigned int command,
-                                    char *buf, int len,
-                                    char **rbuf, int rlen)
-{
-   ejabberd_zlib_data *d = (ejabberd_zlib_data *)handle;
-   int err;
-   int size;
-   ErlDrvBinary *b;
-
-   switch (command)
-   {
-      case DEFLATE:
-        size = BUF_SIZE + 1;
-        rlen = 1;
-        b = driver_alloc_binary(size);
-        b->orig_bytes[0] = 0;
-
-        d->d_stream->next_in = (unsigned char *)buf;
-        d->d_stream->avail_in = len;
-        d->d_stream->avail_out = 0;
-        err = Z_OK;
-
-        while (err == Z_OK && d->d_stream->avail_out == 0)
-        {
-           d->d_stream->next_out = (unsigned char *)b->orig_bytes + rlen;
-           d->d_stream->avail_out = BUF_SIZE;
-
-           err = deflate(d->d_stream, Z_SYNC_FLUSH);
-           die_unless((err == Z_OK) || (err == Z_STREAM_END),
-                      "Deflate error");
-
-           rlen += (BUF_SIZE - d->d_stream->avail_out);
-           size += (BUF_SIZE - d->d_stream->avail_out);
-           b = driver_realloc_binary(b, size);
-        }
-        b = driver_realloc_binary(b, rlen);
-        *rbuf = (char *)b;
-        return rlen;
-      case INFLATE:
-        size = BUF_SIZE + 1;
-        rlen = 1;
-        b = driver_alloc_binary(size);
-        b->orig_bytes[0] = 0;
-
-        if (len > 0) {
-           d->i_stream->next_in = (unsigned char *)buf;
-           d->i_stream->avail_in = len;
-           d->i_stream->avail_out = 0;
-           err = Z_OK;
-
-           while (err == Z_OK && d->i_stream->avail_out == 0)
-           {
-              d->i_stream->next_out = (unsigned char *)b->orig_bytes + rlen;
-              d->i_stream->avail_out = BUF_SIZE;
-
-              err = inflate(d->i_stream, Z_SYNC_FLUSH);
-              die_unless((err == Z_OK) || (err == Z_STREAM_END),
-                         "Inflate error");
-
-              rlen += (BUF_SIZE - d->i_stream->avail_out);
-              size += (BUF_SIZE - d->i_stream->avail_out);
-              b = driver_realloc_binary(b, size);
-           }
-        }
-        b = driver_realloc_binary(b, rlen);
-        *rbuf = (char *)b;
-        return rlen;
-   }
-
-   b = driver_alloc_binary(1);
-   b->orig_bytes[0] = 0;
-   *rbuf = (char *)b;
-   return 1;
-}
-
-
-ErlDrvEntry ejabberd_zlib_driver_entry = {
-   NULL,                       /* F_PTR init, N/A */
-   ejabberd_zlib_drv_start,    /* L_PTR start, called when port is opened */
-   ejabberd_zlib_drv_stop,     /* F_PTR stop, called when port is closed */
-   NULL,                       /* F_PTR output, called when erlang has sent */
-   NULL,                       /* F_PTR ready_input, called when input descriptor ready */
-   NULL,                       /* F_PTR ready_output, called when output descriptor ready */
-   "ejabberd_zlib_drv",                /* char *driver_name, the argument to open_port */
-   NULL,                       /* F_PTR finish, called when unloaded */
-   NULL,                       /* handle */
-   ejabberd_zlib_drv_control,   /* F_PTR control, port_command callback */
-   NULL,                       /* F_PTR timeout, reserved */
-   NULL                                /* F_PTR outputv, reserved */
-};
-
-DRIVER_INIT(ejabberd_zlib_drv) /* must match name in driver_entry */
-{
-   return &ejabberd_zlib_driver_entry;
-}
-
-