[LON-CAPA-cvs] cvs: loncom /auth lonacc.pm

raeburn raeburn at source.lon-capa.org
Thu Dec 19 17:50:16 EST 2013


raeburn		Thu Dec 19 22:50:16 2013 EDT

  Modified files:              
    /loncom/auth	lonacc.pm 
  Log:
  - Call to &sso_login() not needed when lonacc::handler() is called in the
    context of an internal redirect to /adm/switchserver.
  - Avoid ISE on loadbalancer server following change in checkauthen.pm rev 
    1.14
  
  
Index: loncom/auth/lonacc.pm
diff -u loncom/auth/lonacc.pm:1.149 loncom/auth/lonacc.pm:1.150
--- loncom/auth/lonacc.pm:1.149	Fri Dec 13 02:10:27 2013
+++ loncom/auth/lonacc.pm	Thu Dec 19 22:50:16 2013
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Cookie Based Access Handler
 #
-# $Id: lonacc.pm,v 1.149 2013/12/13 02:10:27 raeburn Exp $
+# $Id: lonacc.pm,v 1.150 2013/12/19 22:50:16 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -264,10 +264,13 @@
 =item sso_login()
 
 	handle the case of the single sign on user, at this point $r->user 
-	will be set and valid now need to find the loncapa user info, and possibly
+	will be set and valid; now need to find the loncapa user info, and possibly
 	balance them. If $r->user() is set this means either it was either set by
-        SSO or by checkauthen.pm if a valid cookie was found. The latter case can
-        be identified by the third arg ($usename).
+        SSO or by checkauthen.pm, if a valid cookie was found. The latter case can
+        be identified by the third arg ($usename), except when lonacc is called in 
+        an internal redirect to /adm/switchserver (e.g., load-balancing following
+        successful authentication) -- no cookie set yet.  For that particular case
+        simply skip the call to sso_login(). 
 
 	returns OK if it was SSO and user was handled.
         returns undef if not SSO or no means to handle the user.
@@ -419,9 +422,11 @@
     my %user;
     my $handle = &Apache::lonnet::check_for_valid_session($r,undef,\%user);
 
-    my $result = &sso_login($r,$handle,$user{'name'});
-    if (defined($result)) {
-	return $result;
+    unless (($requrl eq '/adm/switchserver') && (!$r->is_initial_req())) {
+        my $result = &sso_login($r,$handle,$user{'name'});
+        if (defined($result)) {
+	    return $result;
+        }
     }
 
     my ($is_balancer,$otherserver);




More information about the LON-CAPA-cvs mailing list