diff --git a/ChangeLog b/ChangeLog index d86f56d6c..27b856f0e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,15 @@ +2003-04-29 Alexey Shchepin + + * src/ejabberd_c2s.erl: Workaround to make SSL work properly + 2003-04-28 Alexey Shchepin * src/mod_irc/mod_irc_connection.erl: Fixed URL to ejabberd +2003-04-17 Alexey Shchepin + + * src/mod_muc/mod_muc.erl: Support for nick registration + 2003-04-15 Alexey Shchepin * src/ejabberd_c2s.erl: Some fixes in work with socket 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). + Timeout = case SockMod of + ssl -> + 20; + _ -> + infinity + end, + receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid, Timeout). -receiver(Socket, SockMod, ShaperState, C2SPid, XMLStreamPid) -> - case SockMod:recv(Socket, 0) of +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),