--- loncom/lond	2014/04/16 14:39:59	1.508
+++ loncom/lond	2014/06/29 03:22:43	1.511
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # lond "LON Daemon" Server (port "LOND" 5663)
 #
-# $Id: lond,v 1.508 2014/04/16 14:39:59 raeburn Exp $
+# $Id: lond,v 1.511 2014/06/29 03:22:43 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -61,7 +61,7 @@ my $DEBUG = 0;		       # Non zero to ena
 my $status='';
 my $lastlog='';
 
-my $VERSION='$Revision: 1.508 $'; #' stupid emacs
+my $VERSION='$Revision: 1.511 $'; #' stupid emacs
 my $remoteVERSION;
 my $currenthostid="default";
 my $currentdomainid;
@@ -621,7 +621,7 @@ sub ConfigFileFromSelector {
 #     String to send to client ("ok" or "refused" if bad file).
 #
 sub PushFile {
-    my $request = shift;    
+    my $request = shift;
     my ($command, $filename, $contents) = split(":", $request, 3);
     &Debug("PushFile");
     
@@ -651,6 +651,44 @@ sub PushFile {
 
     if($filename eq "host") {
 	$contents = AdjustHostContents($contents);
+    } elsif ($filename eq 'dns_host' || $filename eq 'dns_domain') {
+        if ($contents eq '') {
+            &logthis('<font color="red"> Pushfile: unable to install '
+                    .$tablefile." - no data received from push. </font>");
+            return 'error: push had no data';
+        }
+        if (&Apache::lonnet::get_host_ip($clientname)) {
+            my $clienthost = &Apache::lonnet::hostname($clientname);
+            if ($managers{$clientip} eq $clientname) {
+                my $clientprotocol = $Apache::lonnet::protocol{$clientname};
+                $clientprotocol = 'http' if ($clientprotocol ne 'https');
+                my $url = '/adm/'.$filename;
+                $url =~ s{_}{/};
+                my $ua=new LWP::UserAgent;
+                $ua->timeout(60);
+                my $request=new HTTP::Request('GET',"$clientprotocol://$clienthost$url");
+                my $response=$ua->request($request);
+                if ($response->is_error()) {
+                    &logthis('<font color="red"> Pushfile: unable to install '
+                            .$tablefile." - error attempting to pull data. </font>");
+                    return 'error: pull failed';
+                } else {
+                    my $result = $response->content;
+                    chomp($result);
+                    unless ($result eq $contents) {
+                        &logthis('<font color="red"> Pushfile: unable to install '
+                                .$tablefile." - pushed data and pulled data differ. </font>");
+                        my $pushleng = length($contents);
+                        my $pullleng = length($result);
+                        if ($pushleng != $pullleng) {
+                            return "error: $pushleng vs $pullleng bytes";
+                        } else {
+                            return "error: mismatch push and pull";
+                        }
+                    }
+                }
+            }
+        }
     }
 
     #  Install the new file:
@@ -5317,7 +5355,8 @@ sub validate_crsreq_handler {
 sub crsreq_update_handler {
     my ($cmd, $tail, $client) = @_;
     my $userinput = "$cmd:$tail";
-    my ($cdom,$cnum,$crstype,$action,$ownername,$ownerdomain,$fullname,$title,$code,$infohashref) =
+    my ($cdom,$cnum,$crstype,$action,$ownername,$ownerdomain,$fullname,$title,$code,
+        $accessstart,$accessend,$infohashref) =
         split(/:/, $tail);
     $crstype = &unescape($crstype);
     $action = &unescape($action);
@@ -5326,6 +5365,8 @@ sub crsreq_update_handler {
     $fullname = &unescape($fullname);
     $title = &unescape($title);
     $code = &unescape($code);
+    $accessstart = &unescape($accessstart);
+    $accessend = &unescape($accessend);
     my $incoming = &Apache::lonnet::thaw_unescape($infohashref);
     my ($result,$outcome);
     eval {
@@ -5333,7 +5374,8 @@ sub crsreq_update_handler {
         my %rtnhash;
         $outcome = &localenroll::crsreq_updates($cdom,$cnum,$crstype,$action,
                                                 $ownername,$ownerdomain,$fullname,
-                                                $title,$code,$incoming,\%rtnhash);
+                                                $title,$code,$accessstart,$accessend,
+                                                $incoming,\%rtnhash);
         if ($outcome eq 'ok') {
             my @posskeys = qw(createdweb createdmsg queuedweb queuedmsg formitems reviewweb);
             foreach my $key (keys(%rtnhash)) {
@@ -6552,10 +6594,22 @@ sub make_new_child {
 #        my $tmpsnum=0;            # Now global
 #---------------------------------------------------- kerberos 5 initialization
         &Authen::Krb5::init_context();
-	unless (($dist eq 'fedora5') || ($dist eq 'fedora4') ||  
-		($dist eq 'fedora6') || ($dist eq 'suse9.3') ||
-                ($dist eq 'suse12.2') || ($dist eq 'suse12.3') ||
-                ($dist eq 'suse13.1')) {
+
+        my $no_ets;
+        if ($dist =~ /^(?:centos|rhes)(\d+)$/) {
+            if ($1 >= 7) {
+                $no_ets = 1;
+            }
+        } elsif ($dist =~ /^suse(\d+\.\d+)$/) {
+            if (($1 eq '9.3') || ($1 >= 12.2)) {
+                $no_ets = 1; 
+            }
+        } elsif ($dist =~ /^fedora(\d+)$/) {
+            if ($1 < 7) {
+                $no_ets = 1;
+            }
+        }
+        unless ($no_ets) {
 	    &Authen::Krb5::init_ets();
 	}