[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Fri, 05 Dec 2003 16:45:02 -0000
albertel Fri Dec 5 11:45:02 2003 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
- Fixes BUG#1498, queryauthenticate was doing a poor homeserver search and could get tripped up by a con_lost, now uses &homeserver, and checks for con_lost
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.455 loncom/lonnet/perl/lonnet.pm:1.456
--- loncom/lonnet/perl/lonnet.pm:1.455 Fri Dec 5 11:03:53 2003
+++ loncom/lonnet/perl/lonnet.pm Fri Dec 5 11:45:02 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.455 2003/12/05 16:03:53 albertel Exp $
+# $Id: lonnet.pm,v 1.456 2003/12/05 16:45:02 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -506,38 +506,16 @@
sub queryauthenticate {
my ($uname,$udom)=@_;
- if (($perlvar{'lonRole'} eq 'library') &&
- ($udom eq $perlvar{'lonDefDomain'})) {
- my $answer=reply("encrypt:currentauth:$udom:$uname",
- $perlvar{'lonHostID'});
- unless ($answer eq 'unknown_user' or $answer eq 'refused') {
- if (length($answer)) {
- return $answer;
- }
- else {
- &logthis("User $uname at $udom lacks an authentication mechanism");
- return 'no_host';
- }
- }
+ my $uhome=&homeserver($uname,$udom);
+ if (!$uhome) {
+ &logthis("User $uname at $udom is unknown when looking for authentication mechanism");
+ return 'no_host';
+ }
+ my $answer=reply("encrypt:currentauth:$udom:$uname",$uhome);
+ if ($answer =~ /^(unknown_user|refused|con_lost)/) {
+ &logthis("User $uname at $udom threw error $answer when checking authentication mechanism");
}
-
- my $tryserver;
- foreach $tryserver (keys %libserv) {
- if ($hostdom{$tryserver} eq $udom) {
- my $answer=reply("encrypt:currentauth:$udom:$uname",$tryserver);
- unless ($answer eq 'unknown_user' or $answer eq 'refused') {
- if (length($answer)) {
- return $answer;
- }
- else {
- &logthis("User $uname at $udom lacks an authentication mechanism");
- return 'no_host';
- }
- }
- }
- }
- &logthis("User $uname at $udom lacks an authentication mechanism");
- return 'no_host';
+ return $answer;
}
# --------- Try to authenticate user from domain's lib servers (first this one)