--- loncom/lonnet/perl/lonnet.pm 2007/04/04 00:10:15 1.863 +++ loncom/lonnet/perl/lonnet.pm 2007/04/04 18:01:11 1.865 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.863 2007/04/04 00:10:15 albertel Exp $ +# $Id: lonnet.pm,v 1.865 2007/04/04 18:01:11 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3586,9 +3586,16 @@ sub get_portfolio_access { } if (@users > 0) { foreach my $userkey (@users) { - if (exists($access_hash->{$userkey}{'users'}{$env{'user.name'}.':'.$env{'user.domain'}})) { - return 'ok'; - } + if (ref($access_hash->{$userkey}{'users'}) eq 'ARRAY') { + foreach my $item (@{$access_hash->{$userkey}{'users'}}) { + if (ref($item) eq 'HASH') { + if (($item->{'uname'} eq $env{'user.name'}) && + ($item->{'udom'} eq $env{'user.domain'})) { + return 'ok'; + } + } + } + } } } my %roleshash; @@ -7685,7 +7692,12 @@ sub get_dns { $domain{$name} = \%this_domain; } } - + + sub reset_domain_info { + undef($loaded); + undef(%domain); + } + sub load_domain_tab { &get_dns('/adm/dns/domain',\&parse_domain_tab); my $fh; @@ -7733,6 +7745,15 @@ sub get_dns { } } } + + sub reset_hosts_info { + &reset_domain_info(); + &reset_hosts_ip_info(); + undef(%hostname); + undef(%hostdom); + undef(%libserv); + undef($loaded); + } sub load_hosts_tab { &get_dns('/adm/dns/hosts',\&parse_hosts_tab); @@ -7819,6 +7840,12 @@ sub get_dns { } return; } + + sub reset_hosts_ip_info { + undef(%iphost); + undef(%name_to_ip); + undef(%lonid_to_ip); + } sub get_host_ip { my ($lonid) = @_; @@ -7838,7 +7865,7 @@ sub get_dns { if (%iphost) { return %iphost; } my %hostname = &all_hostnames(); foreach my $id (keys(%hostname)) { - my $name=$hostname{$id}; + my $name=&hostname($id); my $ip; if (!exists($name_to_ip{$name})) { $ip = gethostbyname($name);