diff options
| author | Alexey Shchepin <alexey@process-one.net> | 2003-04-29 19:05:31 +0000 |
|---|---|---|
| committer | Alexey Shchepin <alexey@process-one.net> | 2003-04-29 19:05:31 +0000 |
| commit | 5b1379fe591eefc883ffe8faff0c8f8e2dbdcb95 (patch) | |
| tree | 150ab7f1bec570aacfabc8210c3eccdec41be20c /src | |
| parent | * src/mod_irc/mod_irc_connection.erl: Fixed URL to ejabberd (diff) | |
* src/ejabberd_c2s.erl: Workaround to make SSL work properly
SVN Revision: 102
Diffstat (limited to 'src')
| -rw-r--r-- | src/ejabberd_c2s.erl | 20 |
1 files changed, 15 insertions, 5 deletions
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), |
