--- loncom/lonnet/perl/lonnet.pm 2017/08/08 15:33:13 1.1348 +++ loncom/lonnet/perl/lonnet.pm 2017/08/23 22:46:38 1.1351 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1348 2017/08/08 15:33:13 raeburn Exp $ +# $Id: lonnet.pm,v 1.1351 2017/08/23 22:46:38 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1600,17 +1600,17 @@ sub internet_dom_servers { sub trusted_domains { my ($cmdtype,$calldom) = @_; - my (%trusted,%untrusted); + my ($trusted,$untrusted); if (&domain($calldom) eq '') { - return (\%trusted,\%untrusted); + return ($trusted,$untrusted); } unless ($cmdtype =~ /^(content|shared|enroll|coaurem|domroles|catalog|reqcrs|msg)$/) { - return (\%trusted,\%untrusted); + return ($trusted,$untrusted); } my $callprimary = &domain($calldom,'primary'); my $intcalldom = &Apache::lonnet::internet_dom($callprimary); if ($intcalldom eq '') { - return (\%trusted,\%untrusted); + return ($trusted,$untrusted); } my ($trustconfig,$cached)=&Apache::lonnet::is_cached_new('trust',$calldom); @@ -1660,17 +1660,17 @@ sub trusted_domains { } foreach my $exc (@allexc) { if (ref($doms_by_intdom{$exc}) eq 'ARRAY') { - map { $untrusted{$_}; } @{$doms_by_intdom{$exc}}; + $untrusted = $doms_by_intdom{$exc}; } } foreach my $inc (@allinc) { if (ref($doms_by_intdom{$inc}) eq 'ARRAY') { - map { $trusted{$_}; } @{$doms_by_intdom{$inc}}; + $trusted = $doms_by_intdom{$inc}; } } } } - return(\%trusted,\%untrusted); + return ($trusted,$untrusted); } sub will_trust { @@ -3694,12 +3694,12 @@ sub userfileupload { '_'.$env{'user.domain'}.'/pending'; } elsif (($context eq 'existingfile') || ($context eq 'canceloverwrite')) { my ($docuname,$docudom); - if ($destudom) { + if ($destudom =~ /^$match_domain$/) { $docudom = $destudom; } else { $docudom = $env{'user.domain'}; } - if ($destuname) { + if ($destuname =~ /^$match_username$/) { $docuname = $destuname; } else { $docuname = $env{'user.name'}; @@ -13363,8 +13363,23 @@ sub fetch_dns_checksums { my ($id,$domain,$role,$name,$protocol,$intdom)=split(/:/,$configline); $name=~s/\s//g; if ($id && $domain && $role && $name) { + if ((exists($hostname{$id})) && ($hostname{$id} ne '')) { + my $curr = $hostname{$id}; + my $skip; + if (ref($name_to_host{$curr}) eq 'ARRAY') { + if (($curr eq $name) && (@{$name_to_host{$curr}} == 1)) { + $skip = 1; + } else { + @{$name_to_host{$curr}} = grep { $_ ne $id } @{$name_to_host{$curr}}; + } + } + unless ($skip) { + push(@{$name_to_host{$name}},$id); + } + } else { + push(@{$name_to_host{$name}},$id); + } $hostname{$id}=$name; - push(@{$name_to_host{$name}}, $id); $hostdom{$id}=$domain; if ($role eq 'library') { $libserv{$id}=$name; } if (defined($protocol)) {