--- loncom/lonnet/perl/lonnet.pm	2007/10/01 21:54:06	1.910.2.3
+++ loncom/lonnet/perl/lonnet.pm	2007/09/12 03:40:35	1.911
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.910.2.3 2007/10/01 21:54:06 albertel Exp $
+# $Id: lonnet.pm,v 1.911 2007/09/12 03:40:35 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -320,10 +320,7 @@ sub convert_and_load_session_env {
     my ($lonidsdir,$handle)=@_;
     my @profile;
     {
-	open(my $idf,'+<',"$lonidsdir/$handle.id");
-	if (!$idf) {
-	    return 0;
-	}
+	open(my $idf,"$lonidsdir/$handle.id");
 	flock($idf,LOCK_SH);
 	@profile=<$idf>;
 	close($idf);
@@ -362,10 +359,7 @@ sub transfer_profile_to_env {
 
     my $convert;
     {
-    	open(my $idf,'+<',"$lonidsdir/$handle.id");
-	if (!$idf) {
-	    return;
-	}
+    	open(my $idf,"$lonidsdir/$handle.id");
 	flock($idf,LOCK_SH);
 	if (tie(my %disk_env,'GDBM_File',"$lonidsdir/$handle.id",
 		&GDBM_READER(),0640)) {
@@ -431,9 +425,8 @@ sub appenv {
             $env{$key}=$newenv{$key};
         }
     }
-    open(my $env_file,'+<',$env{'user.environment'});
-    if ($env_file
-	&& &timed_flock($env_file,LOCK_EX)
+    open(my $env_file,$env{'user.environment'});
+    if (&timed_flock($env_file,LOCK_EX)
 	&&
 	tie(my %disk_env,'GDBM_File',$env{'user.environment'},
 	    (&GDBM_WRITER()|&GDBM_NOLOCK()),0640)) {
@@ -453,17 +446,16 @@ sub delenv {
                 "Attempt to delete from environment ".$delthis);
         return 'error';
     }
-    open(my $env_file,'+<',$env{'user.environment'});
-    if ($env_file
-	&& &timed_flock($env_file,LOCK_EX)
+    open(my $env_file,$env{'user.environment'});
+    if (&timed_flock($env_file,LOCK_EX)
 	&&
 	tie(my %disk_env,'GDBM_File',$env{'user.environment'},
 	    (&GDBM_WRITER()|&GDBM_NOLOCK()),0640)) {
 	foreach my $key (keys(%disk_env)) {
 	    if ($key=~/^$delthis/) { 
-		delete($env{$key});
-		delete($disk_env{$key});
-	    }
+                delete($env{$key});
+                delete($disk_env{$key});
+            }
 	}
 	untie(%disk_env);
     }
@@ -590,27 +582,6 @@ sub compare_server_load {
     }
     return ($spare_server,$lowest_load);
 }
-
-# --------------------------- ask offload servers if user already has a session
-sub find_existing_session {
-    my ($udom,$uname) = @_;
-    foreach my $try_server (@{ $spareid{'primary'} },
-			    @{ $spareid{'default'} }) {
-	return $try_server if (&has_user_session($try_server, $udom, $uname));
-    }
-    return;
-}
-
-# -------------------------------- ask if server already has a session for user
-sub has_user_session {
-    my ($lonid,$udom,$uname) = @_;
-    my $result = &reply(join(':','userhassession',
-			     map {&escape($_)} ($udom,$uname)),$lonid);
-    return 1 if ($result eq 'ok');
-
-    return 0;
-}
-
 # --------------------------------------------- Try to change a user's password
 
 sub changepass {
@@ -935,8 +906,8 @@ sub usersearch {
         if (&host_domain($tryserver) eq $dom) {
             my $host=&hostname($tryserver);
             my $queryid=
-                &reply("querysend:".&escape($query).':'.&escape($dom).':'.
-                       &escape($srch->{'srchby'}).'%%'.
+                &reply("querysend:".&escape($query).':'.
+                       &escape($srch->{'srchby'}).':'.
                        &escape($srch->{'srchtype'}).':'.
                        &escape($srch->{'srchterm'}),$tryserver);
             if ($queryid !~/^\Q$host\E\_/) {
@@ -953,20 +924,23 @@ sub usersearch {
             if ( ($reply =~/^timeout/) || ($reply =~/^error/) ) {
                 &logthis('usersrch error: '.$reply.' for '.$dom.' - searching for : '.$srch->{'srchterm'}.' by '.$srch->{'srchby'}.' ('.$srch->{'srchtype'}.') -  maxtries: '.$maxtries.' tries: '.$tries);
             } else {
-                my @matches = split(/&/,$reply);
+                my @matches;
+                if ($reply =~ /\n/) {
+                    @matches = split(/\n/,$reply);
+                } else {
+                    @matches = split(/\&/,$reply);
+                }
                 foreach my $match (@matches) {
-                    my @items = split(/:/,$match);
                     my ($uname,$udom,%userhash);
-                    foreach my $entry (@items) {
-                        my ($key,$value) = split(/=/,$entry);
-                        $key = &unescape($key);
-                        $value = &unescape($value);
+                    foreach my $entry (split(/:/,$match)) {
+                        my ($key,$value) =
+                            map {&unescape($_);} split(/=/,$entry);
                         $userhash{$key} = $value;
                         if ($key eq 'username') {
                             $uname = $value;
                         } elsif ($key eq 'domain') {
                             $udom = $value;
-                        } 
+                        }
                     }
                     $results{$uname.':'.$udom} = \%userhash;
                 }
@@ -7764,9 +7738,6 @@ sub hreflocation {
 	$file=~s-^/home/httpd/lonUsers/($match_domain)/./././($match_name)/userfiles/
 	    -/uploaded/$1/$2/-x;
     }
-    if ($file=~ m{^/userfiles/}) {
-	$file =~ s{^/userfiles/}{/uploaded/};
-    }
     return $file;
 }