SIP re-login fetches correct auth session
authorBill Erickson <berick@esilibrary.com>
Fri, 3 Aug 2012 19:08:51 +0000 (15:08 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Fri, 15 Mar 2013 17:36:40 +0000 (13:36 -0400)
After a login session expires and the SIP server logs in again to
acquire a new authtoken, be sure to use the new authtoken when fetching
the new session object.  Otherwise, the login_session is left undef and
you may see errors like this when checking in items:

Can't call method "ws_ou" on an undefined value at
/usr/local/share/perl/5.10.1/OpenILS/SIP/Transaction/Checkin.pm line 77.

Incidentally, the checkin code is the only code that references
$sip_handler->{login_session}.  And the problem listed above only occurs
when the login session expires just prior to a checkin call.  In any
other scenario, the login_session would ultimately get repaired.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/SIP.pm

index 3737506..da2528c 100644 (file)
@@ -244,9 +244,11 @@ sub login {
     my $key = $response->{payload}->{authtoken};
     syslog('LOG_INFO', "OILS: Login succeeded for $username : authkey = $key");
 
+    $self->{authtoken} = $key;
+
     $self->fetch_session; # to cache the login
 
-    return $self->{authtoken} = $key;
+    return $key;
 }
 
 #