--- loncom/lond 2006/08/29 21:08:08 1.340 +++ loncom/lond 2006/10/11 19:15:47 1.343 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.340 2006/08/29 21:08:08 raeburn Exp $ +# $Id: lond,v 1.343 2006/10/11 19:15:47 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -59,7 +59,7 @@ my $DEBUG = 0; # Non zero to ena my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.340 $'; #' stupid emacs +my $VERSION='$Revision: 1.343 $'; #' stupid emacs my $remoteVERSION; my $currenthostid="default"; my $currentdomainid; @@ -2123,14 +2123,21 @@ sub token_auth_user_file_handler { chomp($session); my $reply="non_auth\n"; - if (open(ENVIN,$perlvar{'lonIDsDir'}.'/'. - $session.'.id')) { + my $file = $perlvar{'lonIDsDir'}.'/'.$session.'.id'; + if (open(ENVIN,"$file")) { flock(ENVIN,LOCK_SH); - while (my $line=) { - my ($envname)=split(/=/,$line,2); - $envname=&unescape($envname); - if ($envname=~ m|^userfile\.\Q$fname\E|) { $reply="ok\n"; } + tie(my %disk_env,'GDBM_File',"$file",&GDBM_READER(),0640); + if (exists($disk_env{"userfile.$fname"})) { + $reply="ok\n"; + } else { + foreach my $envname (keys(%disk_env)) { + if ($envname=~ m|^userfile\.\Q$fname\E|) { + $reply="ok\n"; + last; + } + } } + untie(%disk_env); close(ENVIN); &Reply($client, $reply, "$cmd:$tail"); } else { @@ -3454,7 +3461,7 @@ sub dump_course_id_handler { } unless ($typefilter eq '.' || !defined($typefilter)) { my $unescapeType = &unescape($type); - if (!defined($type)) { + if ($type eq '') { if ($typefilter ne 'Course') { $match = 0; } @@ -4200,7 +4207,11 @@ sub validate_class_access_handler { my $userinput = "$cmd:$tail"; my ($inst_class,$courseowner,$cdom) = split(/:/, $tail); $courseowner = &unescape($courseowner); - my $outcome=&localenroll::check_section($inst_class,$courseowner,$cdom); + my $outcome; + eval { + local($SIG{__DIE__})='DEFAULT'; + $outcome=&localenroll::check_section($inst_class,$courseowner,$cdom); + }; &Reply($client,"$outcome\n", $userinput); return 1;