--- loncom/lonnet/perl/lonnet.pm	2007/08/31 12:33:29	1.909
+++ loncom/lonnet/perl/lonnet.pm	2007/09/29 04:06:34	1.910.2.2
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.909 2007/08/31 12:33:29 raeburn Exp $
+# $Id: lonnet.pm,v 1.910.2.2 2007/09/29 04:06:34 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -582,6 +582,27 @@ 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 {
@@ -1223,8 +1244,10 @@ sub do_cache_new {
 	$time=600;
     }
     if ($debug) { &Apache::lonnet::logthis("Setting $id to $value"); }
-    if (!($memcache->set($id,$setvalue,$time))) {
+    my $result = $memcache->set($id,$setvalue,$time);
+    if (! $result) {
 	&logthis("caching of id -> $id  failed");
+	$memcache->disconnect_all();
     }
     # need to make a copy of $value
     #&make_room($id,$value,$debug);
@@ -7733,6 +7756,9 @@ 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;
 }