Diff for /loncom/lond between versions 1.428 and 1.435.2.1

version 1.428, 2009/10/08 19:54:26 version 1.435.2.1, 2010/01/06 04:19:08
Line 67  my $currentdomainid; Line 67  my $currentdomainid;
 my $client;  my $client;
 my $clientip; # IP address of client.  my $clientip; # IP address of client.
 my $clientname; # LonCAPA name of client.  my $clientname; # LonCAPA name of client.
   my $clientversion;              # LonCAPA version running on client
   
 my $server;  my $server;
   
Line 2061  sub is_home_handler { Line 2062  sub is_home_handler {
 &register_handler("home", \&is_home_handler, 0,1,0);  &register_handler("home", \&is_home_handler, 0,1,0);
   
 #  #
 #   Process an update request for a resource?? I think what's going on here is  #   Process an update request for a resource.
 #   that a resource has been modified that we hold a subscription to.  #   A resource has been modified that we hold a subscription to.
 #   If the resource is not local, then we must update, or at least invalidate our  #   If the resource is not local, then we must update, or at least invalidate our
 #   cached copy of the resource.   #   cached copy of the resource. 
 #   FUTURE WORK:  
 #      I need to look at this logic carefully.  My druthers would be to follow  
 #      typical caching logic, and simple invalidate the cache, drop any subscription  
 #      an let the next fetch start the ball rolling again... however that may  
 #      actually be more difficult than it looks given the complex web of  
 #      proxy servers.  
 # Parameters:  # Parameters:
 #    $cmd      - The command that got us here.  #    $cmd      - The command that got us here.
 #    $tail     - Tail of the command (remaining parameters).  #    $tail     - Tail of the command (remaining parameters).
Line 2094  sub update_resource_handler { Line 2089  sub update_resource_handler {
     my $ownership=ishome($fname);      my $ownership=ishome($fname);
     if ($ownership eq 'not_owner') {      if ($ownership eq 'not_owner') {
  if (-e $fname) {   if (-e $fname) {
               # Delete preview file, if exists
               unlink("$fname.tmp");
               # Delete GCI Test Assembly preview file, if exists
               unlink("$fname.tn");
               # Get usage stats
     my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,      my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
  $atime,$mtime,$ctime,$blksize,$blocks)=stat($fname);   $atime,$mtime,$ctime,$blksize,$blocks)=stat($fname);
     my $now=time;      my $now=time;
     my $since=$now-$atime;      my $since=$now-$atime;
               # If the file has not been used within lonExpire seconds,
               # unsubscribe from it and delete local copy
     if ($since>$perlvar{'lonExpire'}) {      if ($since>$perlvar{'lonExpire'}) {
  my $reply=&Apache::lonnet::reply("unsub:$fname","$clientname");   my $reply=&Apache::lonnet::reply("unsub:$fname","$clientname");
  &devalidate_meta_cache($fname);   &devalidate_meta_cache($fname);
  unlink("$fname");   unlink("$fname");
  unlink("$fname.meta");   unlink("$fname.meta");
     } else {      } else {
               # Yes, this is in active use. Get a fresh copy. Since it might be in
               # very active use and huge (like a movie), copy it to "in.transfer" filename first.
  my $transname="$fname.in.transfer";   my $transname="$fname.in.transfer";
  my $remoteurl=&Apache::lonnet::reply("sub:$fname","$clientname");   my $remoteurl=&Apache::lonnet::reply("sub:$fname","$clientname");
  my $response;   my $response;
Line 2131  sub update_resource_handler { Line 2135  sub update_resource_handler {
  }   }
  alarm(0);   alarm(0);
     }      }
                       # we successfully transfered, copy file over to real name
     rename($transname,$fname);      rename($transname,$fname);
     &devalidate_meta_cache($fname);      &devalidate_meta_cache($fname);
  }   }
Line 3121  sub dump_with_regexp { Line 3126  sub dump_with_regexp {
         my $qresult='';          my $qresult='';
  my $count=0;   my $count=0;
  while (my ($key,$value) = each(%$hashref)) {   while (my ($key,$value) = each(%$hashref)) {
               if ($namespace eq 'roles') {
                   if ($key =~ /^($LONCAPA::match_domain)_($LONCAPA::match_community)_(cc|co|in|ta|ep|ad|st|cr)/) {
                       if ($clientversion =~ /^(\d+)\.(\d+)$/) {
                           my $major = $1;
                           my $minor = $2;
                           next if (($major < 2) || (($major == 2) && ($minor < 9)));
                       }
                   }
               }
     if ($regexp eq '.') {      if ($regexp eq '.') {
  $count++;   $count++;
  if (defined($range) && $count >= $end)   { last; }   if (defined($range) && $count >= $end)   { last; }
Line 3784  sub dump_course_id_handler { Line 3798  sub dump_course_id_handler {
             $cc_clone{$clonedom.'_'.$clonenum} = 1;              $cc_clone{$clonedom.'_'.$clonenum} = 1;
         }           } 
     }      }
     if (defined($createdbefore)) {      if ($createdbefore ne '') {
         $createdbefore = &unescape($createdbefore);          $createdbefore = &unescape($createdbefore);
     } else {      } else {
        $createdbefore = 0;         $createdbefore = 0;
     }      }
     if (defined($createdafter)) {      if ($createdafter ne '') {
         $createdafter = &unescape($createdafter);          $createdafter = &unescape($createdafter);
     } else {      } else {
         $createdafter = 0;          $createdafter = 0;
     }      }
     if (defined($creationcontext)) {      if ($creationcontext ne '') {
         $creationcontext = &unescape($creationcontext);          $creationcontext = &unescape($creationcontext);
     } else {      } else {
         $creationcontext = '.';          $creationcontext = '.';
Line 3826  sub dump_course_id_handler { Line 3840  sub dump_course_id_handler {
             my ($canclone,$valchange);              my ($canclone,$valchange);
             my $items = &Apache::lonnet::thaw_unescape($value);              my $items = &Apache::lonnet::thaw_unescape($value);
             if (ref($items) eq 'HASH') {              if (ref($items) eq 'HASH') {
                   if ($hashref->{$lasttime_key} eq '') {
                       next if ($since > 1);
                   }
                 $is_hash =  1;                  $is_hash =  1;
                 if (defined($clonerudom)) {                  if (defined($clonerudom)) {
                     if ($items->{'cloners'}) {                      if ($items->{'cloners'}) {
Line 6260  sub make_new_child { Line 6277  sub make_new_child {
  &ReadManagerTable();   &ReadManagerTable();
  my $clientrec=defined(&Apache::lonnet::get_hosts_from_ip($outsideip));   my $clientrec=defined(&Apache::lonnet::get_hosts_from_ip($outsideip));
  my $ismanager=($managers{$outsideip}    ne undef);   my $ismanager=($managers{$outsideip}    ne undef);
  $clientname  = "[unknonwn]";   $clientname  = "[unknown]";
  if($clientrec) { # Establish client type.   if($clientrec) { # Establish client type.
     $ConnectionType = "client";      $ConnectionType = "client";
     $clientname = (&Apache::lonnet::get_hosts_from_ip($outsideip))[-1];      $clientname = (&Apache::lonnet::get_hosts_from_ip($outsideip))[-1];
Line 6288  sub make_new_child { Line 6305  sub make_new_child {
  #   #
  #  If the remote is attempting a local init... give that a try:   #  If the remote is attempting a local init... give that a try:
  #   #
  my ($i, $inittype) = split(/:/, $remotereq);   (my $i, my $inittype, $clientversion) = split(/:/, $remotereq);
   
  # If the connection type is ssl, but I didn't get my   # If the connection type is ssl, but I didn't get my
  # certificate files yet, then I'll drop  back to    # certificate files yet, then I'll drop  back to 
Line 6308  sub make_new_child { Line 6325  sub make_new_child {
  }   }
   
  if($inittype eq "local") {   if($inittype eq "local") {
                       $clientversion = $perlvar{'lonVersion'};
     my $key = LocalConnection($client, $remotereq);      my $key = LocalConnection($client, $remotereq);
     if($key) {      if($key) {
  Debug("Got local key $key");   Debug("Got local key $key");

Removed from v.1.428  
changed lines
  Added in v.1.435.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>