From 5b1379fe591eefc883ffe8faff0c8f8e2dbdcb95 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Tue, 29 Apr 2003 19:05:31 +0000 Subject: * src/ejabberd_c2s.erl: Workaround to make SSL work properly SVN Revision: 102 --- src/ejabberd_c2s.erl | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index d519176ed..4722888bd 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -641,10 +641,16 @@ terminate(Reason, StateName, StateData) -> receiver(Socket, SockMod, Shaper, C2SPid) -> XMLStreamPid = xml_stream:start(C2SPid), ShaperState = shaper:new(Shaper), - receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid). - -receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid) -> - case SockMod:recv(Socket, 0) of + Timeout = case SockMod of + ssl -> + 20; + _ -> + infinity + end, + receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid, Timeout). + +receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid, Timeout) -> + case SockMod:recv(Socket, 0, Timeout) of {ok, Text} -> ShaperSt1 = receive {change_shaper, Shaper} -> @@ -654,7 +660,11 @@ receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid) -> end, NewShaperState = shaper:update(ShaperSt1, size(Text)), xml_stream:send_text(XMLStreamPid, Text), - receiver(Socket, SockMod, NewShaperState, C2SPid, XMLStreamPid); + receiver(Socket, SockMod, NewShaperState, C2SPid, XMLStreamPid, + Timeout); + {error, timeout} -> + receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid, + Timeout); {error, Reason} -> exit(XMLStreamPid, closed), gen_fsm:send_event(C2SPid, closed), -- cgit v1.2.3