Skip to content
Snippets Groups Projects
Commit 23caf293 authored by deuce's avatar deuce
Browse files

Instead of returning false, always return a fully populated object with an

additional error property set to a descriptive error string.
parent f328b974
Branches
Tags
No related merge requests found
......@@ -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);
......
......@@ -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');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment