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

ChangeLog
src/mod_caps.erl

index 7dc1aab066ad8fc99513f12f1dcede1de5241c29..282506e0fc4b5f261ebd89f8fc6aef7bf572a0bf 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-12  Badlop  <badlop@process-one.net>
 
        * src/web/ejabberd_web_admin.erl: Include Last-Modified HTTP
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]);
        _ ->