]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_listener.erl: Added handling of accept errors,
authorAlexey Shchepin <alexey@process-one.net>
Tue, 28 Oct 2003 20:26:43 +0000 (20:26 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Tue, 28 Oct 2003 20:26:43 +0000 (20:26 +0000)
added timeout value to ssl:accept

* src/mod_vcard.erl: Added checks for all empty input fields

* src/mod_offline.erl: More strong checks for stored packets

SVN Revision: 163

ChangeLog
src/ejabberd_listener.erl
src/mod_offline.erl
src/mod_vcard.erl

index c4fd84addbee718a33a43835379047cbc8b22105..fbf66da51fe8ab928d4a5a6e265bee4bd3da1d43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2003-10-28  Alexey Shchepin  <alexey@sevcom.net>
 
+       * src/ejabberd_listener.erl: Added handling of accept errors,
+       added timeout value to ssl:accept
+
+       * src/mod_vcard.erl: Added checks for all empty input fields
+
+       * src/mod_offline.erl: More strong checks for stored packets
+
        * src/ejabberd_sm.erl: Bugfix
 
 2003-10-27  Alexey Shchepin  <alexey@sevcom.net>
index 36dad2e1379fb6e6f5bbb33d2f77150827475253..ea04765eb0105a4db50a9874493897bf8ef632d8 100644 (file)
@@ -67,16 +67,11 @@ accept(ListenSocket, Module, Opts) ->
                    ok
            end,
            {ok, Pid} = Module:start({gen_tcp, Socket}, Opts),
-           %{ok, Pid} =
-           %    supervisor:start_child(
-           %      ejabberd_tmp_sup,
-           %      {{Module, Socket},
-           %       {Module, start_link, [{gen_tcp, Socket}, Opts]},
-           %       transient,
-           %       brutal_kill,
-           %       worker,
-           %       [Module]}),
            gen_tcp:controlling_process(Socket, Pid),
+           accept(ListenSocket, Module, Opts);
+       {error, Reason} ->
+           ?INFO_MSG("(~w) Failed TCP accept: ~w",
+                     [ListenSocket, Reason]),
            accept(ListenSocket, Module, Opts)
     end.
 
@@ -90,7 +85,7 @@ init_ssl(Port, Module, Opts, SSLOpts) ->
     accept_ssl(ListenSocket, Module, Opts).
 
 accept_ssl(ListenSocket, Module, Opts) ->
-    case ssl:accept(ListenSocket) of
+    case ssl:accept(ListenSocket, 200) of
        {ok, Socket} ->
            case {ssl:sockname(Socket), ssl:peername(Socket)} of
                {{ok, Addr}, {ok, PAddr}} ->
@@ -99,7 +94,13 @@ accept_ssl(ListenSocket, Module, Opts) ->
                _ ->
                    ok
            end,
-           apply(Module, start_link, [{ssl, Socket}, Opts]),
+           Module:start_link({ssl, Socket}, Opts),
+           accept_ssl(ListenSocket, Module, Opts);
+       {error, timeout} ->
+           accept_ssl(ListenSocket, Module, Opts);
+       {error, Reason} ->
+           ?INFO_MSG("(~w) Failed SSL handshake: ~w",
+                     [ListenSocket, Reason]),
            accept_ssl(ListenSocket, Module, Opts)
     end.
 
index 63537600ea824613763b3aa666214f30fbb9c056..fbd8dfbff7362db9dec8838fa500e0e679debae9 100644 (file)
@@ -65,6 +65,8 @@ stop() ->
 
 store_packet(From, To, Packet) ->
     true = is_process_alive(whereis(?PROCNAME)),
+    Type = xml:get_tag_attr_s("type", Packet),
+    true = Type /= "error" andalso Type /= "groupchat",
     case check_event(From, To, Packet) of
        true ->
            #jid{luser = LUser} = To,
index 70e54cafb93df5b46856ab4d055491a03d340275..8cf82184b035524709fddf6f0aa0948f28e96603 100644 (file)
@@ -22,6 +22,8 @@
 -include("jlib.hrl").
 
 
+%-define(JUD_ALLOW_RETURN_ALL, true)
+
 -record(vcard_search, {user,     luser,
                       fn,       lfn,
                       family,   lfamily,
@@ -386,6 +388,7 @@ record_to_item(R) ->
       ]
      }.
 
+-ifdef(JUD_ALLOW_RETURN_ALL).
 
 search(Data) ->
     MatchSpec = make_matchspec(Data),
@@ -397,6 +400,27 @@ search(Data) ->
            Rs
     end.
 
+-else.
+
+search(Data) ->
+    MatchSpec = make_matchspec(Data),
+    if
+       MatchSpec == #vcard_search{_ = '_'} ->
+           [];
+       true ->
+           case catch mnesia:dirty_select(vcard_search,
+                                          [{MatchSpec, [], ['$_']}]) of
+               {'EXIT', Reason} ->
+                   ?ERROR_MSG("~p", [Reason]),
+                   [];
+               Rs ->
+                   Rs
+           end
+    end.
+
+-endif.
+
+
 % TODO: remove
 %    F = fun() ->
 %              mnesia:select(vcard_search, [{MatchSpec, [], ['$_']}])