]> granicus.if.org Git - ejabberd/commitdiff
XEP-0198: Create shorter resume IDs
authorHolger Weiss <holger@zedat.fu-berlin.de>
Fri, 15 Aug 2014 08:56:59 +0000 (10:56 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Fri, 15 Aug 2014 08:56:59 +0000 (10:56 +0200)
Omit the user and server name from the 'previd' value.

src/ejabberd_c2s.erl

index 66f9db5072caf8f558e187a1c4f60ecb632dfd63..368aacb39fc2fc2c895e70c934ffc80bd8dea460 100644 (file)
@@ -2891,7 +2891,7 @@ is_encapsulated_forward(_El) ->
 
 inherit_session_state(#state{user = U, server = S} = StateData, ResumeID) ->
     case jlib:base64_to_term(ResumeID) of
-      {term, {U, S, R, Time}} ->
+      {term, {R, Time}} ->
          case ejabberd_sm:get_session_pid(U, S, R) of
            none ->
                {error, <<"Previous session PID not found">>};
@@ -2936,8 +2936,6 @@ inherit_session_state(#state{user = U, server = S} = StateData, ResumeID) ->
                      {error, <<"Cannot grab session state">>}
                end
          end;
-      {term, {_WrongU, _WrongS, _R, _Time}} ->
-         {error, <<"Previous JID doesn't match authenticated JID">>};
       _ ->
          {error, <<"Invalid 'previd' value">>}
     end.
@@ -2947,11 +2945,7 @@ resume_session({Time, PID}) ->
 
 make_resume_id(StateData) ->
     {Time, _} = StateData#state.sid,
-    ID = {StateData#state.user,
-         StateData#state.server,
-         StateData#state.resource,
-         Time},
-    jlib:term_to_base64(ID).
+    jlib:term_to_base64({StateData#state.resource, Time}).
 
 %%%----------------------------------------------------------------------
 %%% JID Set memory footprint reduction code