[LON-CAPA-cvs] cvs: loncom(version_2_11_X) / lond
raeburn
raeburn at source.lon-capa.org
Sun Oct 25 23:47:15 EDT 2020
raeburn Mon Oct 26 03:47:15 2020 EDT
Modified files: (Branch: version_2_11_X)
/loncom lond
Log:
- For 2.11
Backport 1.564
Index: loncom/lond
diff -u loncom/lond:1.489.2.38 loncom/lond:1.489.2.39
--- loncom/lond:1.489.2.38 Tue May 5 20:28:56 2020
+++ loncom/lond Mon Oct 26 03:47:15 2020
@@ -2,7 +2,7 @@
# The LearningOnline Network
# lond "LON Daemon" Server (port "LOND" 5663)
#
-# $Id: lond,v 1.489.2.38 2020/05/05 20:28:56 raeburn Exp $
+# $Id: lond,v 1.489.2.39 2020/10/26 03:47:15 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -63,7 +63,7 @@
my $status='';
my $lastlog='';
-my $VERSION='$Revision: 1.489.2.38 $'; #' stupid emacs
+my $VERSION='$Revision: 1.489.2.39 $'; #' stupid emacs
my $remoteVERSION;
my $currenthostid="default";
my $currentdomainid;
@@ -5223,8 +5223,65 @@
®ister_handler("tmpdel", \&tmp_del_handler, 0, 1, 0);
#
+# Process the updatebalcookie command. This command updates a
+# cookie in the lonBalancedir directory on a load balancer node.
+#
+# Parameters:
+# $cmd - Command that got us here.
+# $tail - Tail of the request (escaped cookie: escaped current entry)
+#
+# $client - socket open on the client process.
+#
+# Returns:
+# 1 - Indicating processing should continue.
+# Side Effects:
+# A cookie file is updated from the lonBalancedir directory
+# A reply is sent to the client.
+#
+sub update_balcookie_handler {
+ my ($cmd, $tail, $client) = @_;
+
+ my $userinput= "$cmd:$tail";
+ chomp($tail);
+ my ($cookie,$lastentry) = map { &unescape($_) } (split(/:/,$tail));
+
+ my $updatedone;
+ if ($cookie =~ /^$LONCAPA::match_domain\_$LONCAPA::match_username\_[a-f0-9]{32}$/) {
+ my $execdir=$perlvar{'lonBalanceDir'};
+ if (-e "$execdir/$cookie.id") {
+ my $doupdate;
+ if (open(my $fh,'<',"$execdir/$cookie.id")) {
+ while (my $line = <$fh>) {
+ chomp($line);
+ if ($line eq $lastentry) {
+ $doupdate = 1;
+ last;
+ }
+ }
+ close($fh);
+ }
+ if ($doupdate) {
+ if (open(my $fh,'>',"$execdir/$cookie.id")) {
+ print $fh $clientname;
+ close($fh);
+ $updatedone = 1;
+ }
+ }
+ }
+ }
+ if ($updatedone) {
+ &Reply($client, "ok\n", $userinput);
+ } else {
+ &Failure( $client, "error: ".($!+0)."file update failed ".
+ "while attempting updatebalcookie\n", $userinput);
+ }
+ return 1;
+}
+®ister_handler("updatebalcookie", \&update_balcookie_handler, 0, 1, 0);
+
+#
# Process the delbalcookie command. This command deletes a balancer
-# cookie in the lonBalancedir directory created by switchserver
+# cookie in the lonBalancedir directory on a load balancer node.
#
# Parameters:
# $cmd - Command that got us here.
@@ -5242,6 +5299,7 @@
my $userinput= "$cmd:$cookie";
chomp($cookie);
+ $cookie = &unescape($cookie);
my $deleted = '';
if ($cookie =~ /^$LONCAPA::match_domain\_$LONCAPA::match_username\_[a-f0-9]{32}$/) {
my $execdir=$perlvar{'lonBalanceDir'};
More information about the LON-CAPA-cvs
mailing list