aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_zlib
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2008-03-03 11:55:19 +0000
committerAlexey Shchepin <alexey@process-one.net>2008-03-03 11:55:19 +0000
commit76245f0fcf441442f0a4a4429d8a6bab98e5796e (patch)
tree31269c1a8372dbd90bfc0069f88b4e83767c30cd /src/ejabberd_zlib
parent* src/ejabberd_check.erl: Fixed missing clause (EJAB-533). (diff)
* src/tls/tls.erl: recv_data/2 doesn't throw exceptions now
* src/ejabberd_zlib/ejabberd_zlib.erl: Likewise SVN Revision: 1217
Diffstat (limited to 'src/ejabberd_zlib')
-rw-r--r--src/ejabberd_zlib/ejabberd_zlib.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/ejabberd_zlib/ejabberd_zlib.erl b/src/ejabberd_zlib/ejabberd_zlib.erl
index 0d9ecbe51..22bcaa8dd 100644
--- a/src/ejabberd_zlib/ejabberd_zlib.erl
+++ b/src/ejabberd_zlib/ejabberd_zlib.erl
@@ -100,7 +100,7 @@ enable_zlib(SockMod, Socket) ->
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}.
@@ -116,7 +116,15 @@ recv(#zlibsock{sockmod = SockMod, socket = Socket} = ZlibSock,
Error
end.
-recv_data(#zlibsock{zlibport = Port} = _ZlibSock, Packet) ->
+recv_data(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};