]> granicus.if.org Git - ejabberd/commitdiff
* src/tls/tls.erl: recv_data/2 doesn't throw exceptions now
authorAlexey Shchepin <alexey@process-one.net>
Mon, 3 Mar 2008 11:55:19 +0000 (11:55 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Mon, 3 Mar 2008 11:55:19 +0000 (11:55 +0000)
* src/ejabberd_zlib/ejabberd_zlib.erl: Likewise

SVN Revision: 1217

ChangeLog
src/ejabberd_zlib/ejabberd_zlib.erl
src/tls/tls.erl

index bc78f2a4618b9315f2516be020756566b3c72fee..5c148a19bd0643fd53028fa1a02c44b3c4b8e239 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-03  Alexey Shchepin  <alexey@process-one.net>
+
+       * src/tls/tls.erl: recv_data/2 doesn't throw exceptions now
+       * src/ejabberd_zlib/ejabberd_zlib.erl: Likewise
+
 2008-02-29  Alexey Shchepin  <alexey@process-one.net>
 
        * src/mod_roster.erl: Fixed "from" attribute in roster pushes
index 0d9ecbe51d0f6e8cd0c63e877ed471f542d9fd96..22bcaa8dd2b8a9c5e21671a4c0950a1bf6362a4f 100644 (file)
@@ -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};
index aeeebaacc45d4fbdfd4d97f9735108aaafabc177..e8b8557bc42ffcdf2861f18ab42d096d51f9158e 100644 (file)
@@ -149,7 +149,15 @@ recv(#tlssock{tcpsock = TCPSocket} = TLSSock,
            Error
     end.
 
-recv_data(#tlssock{tcpsock = TCPSocket, tlsport = Port}, Packet) ->
+recv_data(TLSSock, Packet) ->
+    case catch recv_data1(TLSSock, Packet) of
+       {'EXIT', Reason} ->
+           {error, Reason};
+       Res ->
+           Res
+    end.
+
+recv_data1(#tlssock{tcpsock = TCPSocket, tlsport = Port}, Packet) ->
     case port_control(Port, ?SET_ENCRYPTED_INPUT, Packet) of
        <<0>> ->
            case port_control(Port, ?GET_DECRYPTED_INPUT, []) of