aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2003-04-29 19:05:31 +0000
committerAlexey Shchepin <alexey@process-one.net>2003-04-29 19:05:31 +0000
commit5b1379fe591eefc883ffe8faff0c8f8e2dbdcb95 (patch)
tree150ab7f1bec570aacfabc8210c3eccdec41be20c
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
-rw-r--r--ChangeLog8
-rw-r--r--src/ejabberd_c2s.erl20
2 files changed, 23 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index d86f56d6c..27b856f0e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,15 @@
+2003-04-29 Alexey Shchepin <alexey@sevcom.net>
+
+ * src/ejabberd_c2s.erl: Workaround to make SSL work properly
+
2003-04-28 Alexey Shchepin <alexey@sevcom.net>
* src/mod_irc/mod_irc_connection.erl: Fixed URL to ejabberd
+2003-04-17 Alexey Shchepin <alexey@sevcom.net>
+
+ * src/mod_muc/mod_muc.erl: Support for nick registration
+
2003-04-15 Alexey Shchepin <alexey@sevcom.net>
* 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).
-
-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),