diff --git a/exec/load/salib.js b/exec/load/salib.js
index 5fefa2373fd8a5c28ebab162427b700d6a8ec8bb..ac9378c2521b3d30e121a25323056f7bfc30ea49 100644
--- a/exec/load/salib.js
+++ b/exec/load/salib.js
@@ -8,7 +8,7 @@ load("sockdefs.js")
 function SPAMC_Message(messagefile, addr, port, user)
 {
 	if(!file_exists(messagefile))
-		return(false);
+		this.error="Message file '"+messagefile+"' does not exist";
 	this.addr=addr;
 	if(this.addr==undefined)
 		this.addr='127.0.0.1';
@@ -30,13 +30,13 @@ function Message_DoCommand(command)
 	var rcvd=new Array();
 	var tmp;
 	var sock=new Socket(SOCK_STREAM, "spamc");
-	var ret=new Object();
-	ret.message='';
+	var ret={message:'', isSpam:false, score:'unknown', threshold:'unknown', symbols:[]};
 
 	if(!sock.connect(this.addr, this.port)) {
-		log("ERROR: spamc.js failed to connect!");
-		return(false);
+		ret.error='Failed to connect to spamd';
+		return(ret);
 	}
+
 	sock.write(command.toUpperCase()+" SPAMC/1.2\r\n");
 	sock.write("Content-length: "+file_size(this.messagefile)+"\r\n");
 	if(this.user)	// Optional
@@ -44,6 +44,7 @@ function Message_DoCommand(command)
 	sock.write("\r\n");
 	sock.sendfile(this.messagefile);
 	sock.is_writeable=false;
+
 	while(1) {
 		tmp=sock.recvline();
 		if(tmp==undefined || tmp=='')
@@ -61,18 +62,20 @@ function Message_DoCommand(command)
 			ret.message += tmp;
 		}
 	}
+
 	if(rcvd.length < 1) {
-		log("ERROR: No lines read from spamd");
-		return(false)
+		ret.error='No lines read from spamd');
+		return(ret)
 	}
-	var tmp=rcvd[0].split(/\s+/,3);
+
+	tmp=rcvd[0].split(/\s+/,3);
 	if(tmp.length < 3) {
-		log("ERROR: Unable to parse line '"+rcvd[0]);
-		return(false)
+		ret.error="Unable to parse line '"+rcvd[0];
+		return(ret)
 	}
-	if(tmp[1] != 0) {
-		log("ERROR: spamd returned error "+tmp[2]+" ("+tmp[1]+")");
-		return(false)
+	if(tmp[1] != '0') {
+		ret.error="spamd returned error "+tmp[2]+" ("+tmp[1]+")";
+		return(ret)
 	}
 
 	/* Parse headers */
@@ -94,11 +97,9 @@ function Message_DoCommand(command)
 	}
 
 	if(command == 'SYMBOLS') {
-		if(ret!==false) {
-			ret.message=ret.message.replace(/[\r\n]/g,'');
-			ret.symbols=ret.message.split(/,/);
-			ret.message='';
-		}
+		ret.message=ret.message.replace(/[\r\n]/g,'');
+		ret.symbols=ret.message.split(/,/);
+		ret.message='';
 	}
 
 	return(ret);
diff --git a/exec/spamc.js b/exec/spamc.js
index 729ccc142519dcc28a429ca5a4a97de555109437..f00a5b9ab027e314bda4e6d3787f93f8cac051d7 100644
--- a/exec/spamc.js
+++ b/exec/spamc.js
@@ -41,14 +41,18 @@ function main()
 	}
 
 	var msg=new SPAMC_Message(message_text_filename, address, tcp_port, user);
-	if(msg === false)
+	if(msg.error != undefined) {
+		log(LOG_ERR,"spamc: !ERROR "+msg.error);
 		return;
+	}
 	msg.debug=true;
 	log(LOG_INFO, "spamc: Executing command: " + cmd);
 	var ret=msg.DoCommand(cmd);
-	if(ret === false)
+	if(ret.error != undefined) {
+		log(LOG_ERR,"spamc: !ERROR "+ret.error);
 		return;
-	if(ret.score!=undefined) {
+	}
+	if(!isNaN(ret.score)) {
 		log(LOG_INFO, "spamc: Score: " + ret.score + ' / ' + ret.threshold);
 		if(threshold && ret.score < threshold)
 			var ret=msg.DoCommand(cmd='PROCESS');