]> granicus.if.org Git - ejabberd/commitdiff
Cache negative response (EJAB-474)
authorChristophe Romain <christophe.romain@process-one.net>
Mon, 14 Apr 2008 12:00:37 +0000 (12:00 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Mon, 14 Apr 2008 12:00:37 +0000 (12:00 +0000)
SVN Revision: 1293

ChangeLog
src/mod_caps.erl

index 561005038f63393ac2f39fa0b6bc0dd2bece6f22..82fa16deb0deca9d0798240735ae3f2406d8620f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-04-14  Christophe Romain <christophe.romain@process-one.net>
+
+       * src/mod_caps.erl: Cache negative response (EJAB-474)
+
 2008-04-11  Alexey Shchepin  <alexey@process-one.net>
 
        * src/tls/tls_drv.c: Fixed gcc signedness warnings (EJAB-447)
index 8bf37d8be171cf04571250241c64d3a456f9c4ab..dee9078a9f7afa42741cc930685b82256048ad45 100644 (file)
@@ -250,8 +250,21 @@ handle_cast({disco_response, From, _To,
                    ?ERROR_MSG("ID '~s' matches no query", [ID])
            end;
        {error, _} ->
-           gen_server:cast(self(), visit_feature_queries),
-           ?DEBUG("Error IQ reponse from ~s:~n~p", [jlib:jid_to_string(From), SubEls]);
+           %% XXX: if we get error, we cache empty feature not to probe the client continuously
+           case ?DICT:find(ID, Requests) of
+               {ok, {Node, SubNode}} ->
+                   Features = [],
+                   mnesia:transaction(
+                     fun() ->
+                             mnesia:write(#caps_features{node_pair = {Node, SubNode},
+                                                         features = Features})
+                     end),
+                   gen_server:cast(self(), visit_feature_queries);
+               error ->
+                   ?ERROR_MSG("ID '~s' matches no query", [ID])
+           end;
+           %gen_server:cast(self(), visit_feature_queries),
+           %?DEBUG("Error IQ reponse from ~s:~n~p", [jlib:jid_to_string(From), SubEls]);
        {result, _} ->
            ?DEBUG("Invalid IQ contents from ~s:~n~p", [jlib:jid_to_string(From), SubEls]);
        _ ->