diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_net.erl | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/rabbit_net.erl b/src/rabbit_net.erl index 7d39fc255d..cd52ded803 100644 --- a/src/rabbit_net.erl +++ b/src/rabbit_net.erl @@ -43,11 +43,14 @@ -include("rabbit.hrl"). +async_recv(Sock, Length, -1) when is_record(Sock, rabbit_ssl_socket) -> + async_recv(Sock, Length, infinity); async_recv(Sock, Length, Timeout) when is_record(Sock, rabbit_ssl_socket) -> Pid = self(), Ref = make_ref(), + Fun = fun() -> case ssl:recv(Sock#rabbit_ssl_socket.ssl, Length, Timeout) of {ok, Data} -> @@ -64,7 +67,8 @@ async_recv(Sock, Length, Timeout) when is_port(Sock) -> prim_inet:async_recv(Sock, Length, Timeout). close(Sock) when is_record(Sock, rabbit_ssl_socket) -> - ssl:close(Sock#rabbit_ssl_socket.ssl); + ssl:close(Sock#rabbit_ssl_socket.ssl), + gen_tcp:close(Sock#rabbit_ssl_socket.tcp); close(Sock) when is_port(Sock) -> gen_tcp:close(Sock). @@ -92,7 +96,12 @@ peername(Sock) when is_port(Sock) -> port_command(Sock, Data) when is_record(Sock, rabbit_ssl_socket) -> - ssl:send(Sock#rabbit_ssl_socket.ssl, Data); + case ssl:send(Sock#rabbit_ssl_socket.ssl, Data) of + ok -> + true; + {error, Reason} -> + throw(Reason) + end; port_command(Sock, Data) when is_port(Sock) -> erlang:port_command(Sock, Data). |
