Commit Diff


commit - 0337b1ac1e128661b81901bdf2384e4ee51fa0df
commit + 74aac88dbf674979795a90f855f96883b43d18e6
blob - 77cc7c1ea2c1196ba86d8e142d18b174e60351cd
blob + ad9d32c9ff0845a90a7a7a2299956b1459bbe986
--- src/ngircd/irc.c
+++ src/ngircd/irc.c
@@ -319,19 +319,19 @@ Send_Message(CLIENT * Client, REQUEST * Req, int Force
 
 	if (Req->argc == 0) {
 		if (!SendErrors)
-			return true;
+			return CONNECTED;
 		return IRC_WriteStrClient(Client, ERR_NORECIPIENT_MSG,
 					  Client_ID(Client), Req->command);
 	}
 	if (Req->argc == 1) {
 		if (!SendErrors)
-			return true;
+			return CONNECTED;
 		return IRC_WriteStrClient(Client, ERR_NOTEXTTOSEND_MSG,
 					  Client_ID(Client));
 	}
 	if (Req->argc > 2) {
 		if (!SendErrors)
-			return true;
+			return CONNECTED;
 		return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
 					  Client_ID(Client), Req->command);
 	}
@@ -421,20 +421,18 @@ Send_Message(CLIENT * Client, REQUEST * Req, int Force
 			/* Target is a user, enforce type */
 			if (Client_Type(cl) != ForceType) {
 				if (!SendErrors)
-					return true;
-				if (!IRC_WriteStrClient(from, ERR_NOSUCHNICK_MSG,
+					return CONNECTED;
+				return IRC_WriteStrClient(from, ERR_NOSUCHNICK_MSG,
 							  Client_ID(from),
-							  currentTarget))
-					return false;
-			} else if (SendErrors
-				   && (Client_Type(Client) != CLIENT_SERVER)
-				   && strchr(Client_Modes(cl), 'a')) {
+							  currentTarget);
+			}
+			if (SendErrors && (Client_Type(Client) != CLIENT_SERVER)
+			    && strchr(Client_Modes(cl), 'a')) {
 				/* Target is away */
-				if (!SendErrors)
-					return true;
-				if (!IRC_WriteStrClient
-				    (from, RPL_AWAY_MSG, Client_ID(from),
-				     Client_ID(cl), Client_Away(cl)))
+				if (!IRC_WriteStrClient(from, RPL_AWAY_MSG,
+							Client_ID(from),
+							Client_ID(cl),
+							Client_Away(cl)))
 					return DISCONNECTED;
 			}
 			if (Client_Conn(from) > NONE) {
@@ -442,23 +440,23 @@ Send_Message(CLIENT * Client, REQUEST * Req, int Force
 			}
 			if (!IRC_WriteStrClientPrefix(cl, from, "PRIVMSG %s :%s",
 						Client_ID(cl), Req->argv[1]))
-				return false;
+				return DISCONNECTED;
 		} else if (strchr("$#", currentTarget[0])
 			   && strchr(currentTarget, '.')) {
 			/* targetmask */
 			if (!Send_Message_Mask(from, currentTarget,
 					       Req->argv[1], SendErrors))
-				return false;
+				return DISCONNECTED;
 		} else if ((chan = Channel_Search(currentTarget))) {
 			/* channel */
 			if (!Channel_Write(chan, from, Client, Req->argv[1]))
-				return false;
+				return DISCONNECTED;
 		} else {
 			if (!SendErrors)
-				return true;
+				return CONNECTED;
 			if (!IRC_WriteStrClient(from, ERR_NOSUCHNICK_MSG,
 						Client_ID(from), currentTarget))
-				return false;
+				return DISCONNECTED;
 		}
 
 		currentTarget = strtok_r(NULL, ",", &lastCurrentTarget);