]> granicus.if.org Git - ejabberd/commitdiff
* src/ejabberd_c2s.erl: We should allow use of bare resource in from by the client...
authorMickaël Rémond <mickael.remond@process-one.net>
Sun, 28 Dec 2008 12:15:51 +0000 (12:15 +0000)
committerMickaël Rémond <mickael.remond@process-one.net>
Sun, 28 Dec 2008 12:15:51 +0000 (12:15 +0000)
SVN Revision: 1759

ChangeLog
src/ejabberd_c2s.erl

index d60614fea0156bae5ce7600509f7112821638b79..baee8cf50051b48fffb7d94514110f03e698687d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-12-28  Mickael Remond  <mremond@process-one.net>
+
+       * src/ejabberd_c2s.erl: We should allow use of bare resource in from by
+       the client (partially revert r1727) (EJAB-812).
+
 2008-12-26  Badlop  <badlop@process-one.net>
 
        * src/web/ejabberd_web_admin.erl: Show in ejabberd Web Admin the
index 7fcff5b41dce791a7344705f400d8e6ac9cf2ca8..c8ae3f188f1d8df2e05415eee18e3cc03797e2da 100644 (file)
@@ -1983,20 +1983,33 @@ is_ip_blacklisted({IP,_Port}) ->
 check_from(El, FromJID) ->
     case xml:get_tag_attr("from", El) of
        false ->
-           El;
-       {value, SJID} ->
-           JID = jlib:string_to_jid(SJID),
-           case JID of
-               error ->
-                   'invalid-from';
-               #jid{} ->
-                   if
-                       (JID#jid.luser == FromJID#jid.luser) and
-                       (JID#jid.lserver == FromJID#jid.lserver) and
-                       (JID#jid.lresource == FromJID#jid.lresource) ->
-                           El;
-                       true ->
+           jlib:replace_from(FromJID, El);
+       {value, JIDElString} ->
+           JIDEl = jlib:string_to_jid(JIDElString),
+           case JIDEl#jid.lresource of 
+               "" ->
+                   %% Matching JID: The stanza is ok
+                   if JIDEl#jid.luser == FromJID#jid.luser andalso
+                      JIDEl#jid.lserver == FromJID#jid.lserver ->
+                           %% We force the resource on the from attribute in the packet.
+                           %% This is strictly needed only for IQ (to
+                           %% reply to the client), but I do not see
+                           %% any good reason for now not to do it on
+                           %% all packets.
+                           %% Need to be changed to support multiple
+                           %% resource binding per connection.
+                           jlib:replace_from(FromJID, El);
+                      true ->
                            'invalid-from'
+                   end;
+               _ ->
+                   %% Matching JID: The stanza is ok
+                   if JIDEl#jid.luser == FromJID#jid.luser andalso
+                      JIDEl#jid.lserver == FromJID#jid.lserver andalso 
+                      JIDEl#jid.lresource == FromJID#jid.lresource ->
+                           El;
+                      true ->
+                          'invalid-from'
                    end
            end
     end.