--- loncom/lond	2006/02/08 17:11:46	1.319
+++ loncom/lond	2006/02/21 18:43:37	1.321
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # lond "LON Daemon" Server (port "LOND" 5663)
 #
-# $Id: lond,v 1.319 2006/02/08 17:11:46 www Exp $
+# $Id: lond,v 1.321 2006/02/21 18:43:37 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -61,7 +61,7 @@ my $status='';
 my $lastlog='';
 my $lond_max_wait_time = 13;
 
-my $VERSION='$Revision: 1.319 $'; #' stupid emacs
+my $VERSION='$Revision: 1.321 $'; #' stupid emacs
 my $remoteVERSION;
 my $currenthostid="default";
 my $currentdomainid;
@@ -4348,10 +4348,19 @@ sub photo_permission_handler {
     my $userinput               = "$cmd:$tail";
     my $cdom = $tail;
     my ($perm_reqd,$conditions);
-    my $outcome = &localenroll::photo_permission($cdom,\$perm_reqd,
-						 \$conditions);
-    &Reply($client, &escape($outcome.':'.$perm_reqd.':'. $conditions)."\n",
-	   $userinput);
+    my $outcome;
+    eval {
+	local($SIG{__DIE__})='DEFAULT';
+	$outcome = &localenroll::photo_permission($cdom,\$perm_reqd,
+						  \$conditions);
+    };
+    if (!$@) {
+	&Reply($client, &escape($outcome.':'.$perm_reqd.':'. $conditions)."\n",
+	       $userinput);
+    } else {
+	&Failure($client,"unknown_cmd\n",$userinput);
+    }
+    return 1;
 }
 &register_handler("autophotopermission",\&photo_permission_handler,0,1,0);
 
@@ -4376,6 +4385,7 @@ sub photo_check_handler {
     my $result = &localstudentphoto::fetch($udom,$uname,$pid,\$response);
     $result .= ':'.$response;
     &Reply($client, &escape($result)."\n",$userinput);
+    return 1;
 }
 &register_handler("autophotocheck",\&photo_check_handler,0,1,0);
 
@@ -4389,8 +4399,17 @@ sub photo_choice_handler {
     my ($cmd, $tail, $client) = @_;
     my $userinput             = "$cmd:$tail";
     my $cdom                  = &unescape($tail);
-    my ($update,$comment) = &localenroll::manager_photo_update($cdom);
-    &Reply($client,&escape($update).':'.&escape($comment)."\n",$userinput);
+    my ($update,$comment);
+    eval {
+	local($SIG{__DIE__})='DEFAULT';
+	($update,$comment)    = &localenroll::manager_photo_update($cdom);
+    };
+    if (!$@) {
+	&Reply($client,&escape($update).':'.&escape($comment)."\n",$userinput);
+    } else {
+	&Failure($client,"unknown_cmd\n",$userinput);
+    }
+    return 1;
 }
 &register_handler("autophotochoice",\&photo_choice_handler,0,1,0);
 
@@ -4423,7 +4442,10 @@ sub student_photo_handler {
     &mkpath($path);
     my $file;
     if ($type eq 'thumbnail') {
-        $file=&localstudentphoto::fetch_thumbnail($domain,$uname);
+	eval {
+	    local($SIG{__DIE__})='DEFAULT';
+	    $file=&localstudentphoto::fetch_thumbnail($domain,$uname);
+	};
     } else {
         $file=&localstudentphoto::fetch($domain,$uname);
     }
@@ -5481,8 +5503,11 @@ sub is_author {
 
     #  Author role should show up as a key /domain/_au
 
-    my $key   = "/$domain/_au";
-    my $value = $hashref->{$key};
+    my $key    = "/$domain/_au";
+    my $value;
+    if (defined($hashref)) {
+	$value = $hashref->{$key};
+    }
 
     if(defined($value)) {
 	&Debug("$user @ $domain is an author");