--- loncom/lonnet/perl/lonnet.pm 2005/10/27 19:47:39 1.669 +++ loncom/lonnet/perl/lonnet.pm 2005/10/29 02:52:50 1.671 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.669 2005/10/27 19:47:39 raeburn Exp $ +# $Id: lonnet.pm,v 1.671 2005/10/29 02:52:50 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -443,15 +443,15 @@ sub overloaderror { # ------------------------------ Find server with least workload from spare.tab sub spareserver { - my ($loadpercent,$userloadpercent) = @_; + my ($loadpercent,$userloadpercent,$want_server_name) = @_; my $tryserver; my $spareserver=''; if ($userloadpercent !~ /\d/) { $userloadpercent=0; } my $lowestserver=$loadpercent > $userloadpercent? $loadpercent : $userloadpercent; - foreach $tryserver (keys %spareid) { - my $loadans=reply('load',$tryserver); - my $userloadans=reply('userload',$tryserver); + foreach $tryserver (keys(%spareid)) { + my $loadans=&reply('load',$tryserver); + my $userloadans=&reply('userload',$tryserver); if ($loadans !~ /\d/ && $userloadans !~ /\d/) { next; #didn't get a number from the server } @@ -468,7 +468,11 @@ sub spareserver { $answer = $userloadans; } if (($answer =~ /\d/) && ($answer<$lowestserver)) { - $spareserver="http://$hostname{$tryserver}"; + if ($want_server_name) { + $spareserver=$tryserver; + } else { + $spareserver="http://$hostname{$tryserver}"; + } $lowestserver=$answer; } } @@ -3102,18 +3106,26 @@ sub allowed { # not allowing 'edit' access (editupload) to uploaded course docs if (($priv eq 'bre') && ($uri=~m|^uploaded/|)) { $thisallowed=''; - my $refuri=$env{'httpref.'.$orguri}; - if ($refuri) { - if ($refuri =~ m|^/adm/|) { - $thisallowed='F'; - } else { - $refuri=&declutter($refuri); - my ($match) = &is_on_map($refuri); - if ($match) { + my ($match)=&is_on_map($uri); + if ($match) { + if ($env{'user.priv.'.$env{'request.role'}.'./'} + =~/\Q$priv\E\&([^\:]*)/) { + $thisallowed.=$1; + } + } else { + my $refuri=$env{'httpref.'.$orguri}; + if ($refuri) { + if ($refuri =~ m|^/adm/|) { $thisallowed='F'; + } else { + $refuri=&declutter($refuri); + my ($match) = &is_on_map($refuri); + if ($match) { + $thisallowed='F'; + } } - } - } + } + } } # Full access at system, domain or course-wide level? Exit.