repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 08d49a8fa02ef11b22d611d11c595812ce207ac8:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 08d49a8fa02ef11b22d611d11c595812ce207ac8
Author: Alexander Barton 
Date:   Tue Aug 6 23:16:35 2013 +0200

    Fix return code of some IRC_WriteXXX() functions

    These functions usually write to more than one target, and therefore
    can't return value indicating success or failure in a sane way. And, even
    more omportant, these functions should send to as much as possible clients
    and not stop at the first client which isn't reachable any more!

diff --git a/src/ngircd/channel.c b/src/ngircd/channel.c
index c5f65fe8051f9dbca27c2f26f073c731112ced08..
index ..06b88bae1db7404693df44b298a897b8c31c55cc 100644
--- a/src/ngircd/channel.c
+++ b/src/ngircd/channel.c
@@ -931,8 +931,9 @@ Channel_Write(CHANNEL *Chan, CLIENT *From, CLIENT *Client, const char *Command,
 	if (Client_Conn(From) > NONE)
 		Conn_UpdateIdle(Client_Conn(From));

-	return IRC_WriteStrChannelPrefix(Client, Chan, From, true,
-			"%s %s :%s", Command, Channel_Name(Chan), Text);
+	IRC_WriteStrChannelPrefix(Client, Chan, From, true, "%s %s :%s",
+				  Command, Channel_Name(Chan), Text);
+	return CONNECTED;
 }


diff --git a/src/ngircd/irc-write.c b/src/ngircd/irc-write.c
index ea9b9a02836a0c8f5c617c6cf6f5b2f7c2a5ff79..
index ..f4d4361a73458495e0d8e0f706f1e58561775f19 100644
--- a/src/ngircd/irc-write.c
+++ b/src/ngircd/irc-write.c
@@ -41,7 +41,7 @@
 static const char *Get_Prefix PARAMS((CLIENT *Target, CLIENT *Client));
 static void cb_writeStrServersPrefixFlag PARAMS((CLIENT *Client,
 					 CLIENT *Prefix, void *Buffer));
-static bool Send_Marked_Connections PARAMS((CLIENT *Prefix, const char *Buffer));
+static void Send_Marked_Connections PARAMS((CLIENT *Prefix, const char *Buffer));


 #ifdef PROTOTYPES
@@ -112,11 +112,11 @@ va_dcl


 #ifdef PROTOTYPES
-GLOBAL bool
+GLOBAL void
 IRC_WriteStrChannel(CLIENT *Client, CHANNEL *Chan, bool Remote,
 		    const char *Format, ...)
 #else
-GLOBAL bool
+GLOBAL void
 IRC_WriteStrChannel(Client, Chan, Remote, Format, va_alist)
 CLIENT *Client;
 CHANNEL *Chan;
@@ -139,21 +139,21 @@ va_dcl
 	vsnprintf( buffer, 1000, Format, ap );
 	va_end( ap );

-	return IRC_WriteStrChannelPrefix( Client, Chan, Client_ThisServer( ), Remote, "%s", buffer );
+	IRC_WriteStrChannelPrefix(Client, Chan, Client_ThisServer(),
+				  Remote, "%s", buffer );
 } /* IRC_WriteStrChannel */


-
 /**
  * send message to all clients in the same channel, but only send message
  * once per remote server.
  */
 #ifdef PROTOTYPES
-GLOBAL bool
+GLOBAL void
 IRC_WriteStrChannelPrefix(CLIENT *Client, CHANNEL *Chan, CLIENT *Prefix,
 			  bool Remote, const char *Format, ...)
 #else
-GLOBAL bool
+GLOBAL void
 IRC_WriteStrChannelPrefix(Client, Chan, Prefix, Remote, Format, va_alist)
 CLIENT *Client;
 CHANNEL *Chan;
@@ -204,7 +204,7 @@ va_dcl
 		}
 		cl2chan = Channel_NextMember( Chan, cl2chan );
 	}
-	return Send_Marked_Connections(Prefix, buffer);
+	Send_Marked_Connections(Prefix, buffer);
 } /* IRC_WriteStrChannelPrefix */


@@ -324,11 +324,11 @@ IRC_WriteStrServersPrefixFlag_CB(CLIENT *ExceptOf, CLIENT *Prefix, char Flag,
  * only send message once per remote server.
  */
 #ifdef PROTOTYPES
-GLOBAL bool
+GLOBAL void
 IRC_WriteStrRelatedPrefix(CLIENT *Client, CLIENT *Prefix, bool Remote,
 			  const char *Format, ...)
 #else
-GLOBAL bool
+GLOBAL void
 IRC_WriteStrRelatedPrefix(Client, Prefix, Remote, Format, va_alist)
 CLIENT *Client;
 CLIENT *Prefix;
@@ -384,7 +384,7 @@ va_dcl

 		chan_cl2chan = Channel_NextChannelOf( Client, chan_cl2chan );
 	}
-	return Send_Marked_Connections(Prefix, buffer);
+	Send_Marked_Connections(Prefix, buffer);
 } /* IRC_WriteStrRelatedPrefix */


@@ -471,11 +471,10 @@ cb_writeStrServersPrefixFlag(CLIENT *Client, CLIENT *Prefix, void *Buffer)
 } /* cb_writeStrServersPrefixFlag */


-static bool
+static void
 Send_Marked_Connections(CLIENT *Prefix, const char *Buffer)
 {
 	CONN_ID conn;
-	bool ok = CONNECTED;

 	assert(Prefix != NULL);
 	assert(Buffer != NULL);
@@ -483,16 +482,13 @@ Send_Marked_Connections(CLIENT *Prefix, const char *Buffer)
 	conn = Conn_First();
 	while (conn != NONE) {
 		if (Conn_Flag(conn) == SEND_TO_SERVER)
-			ok = Conn_WriteStr(conn, ":%s %s",
-					   Client_ID(Prefix), Buffer);
+			Conn_WriteStr(conn, ":%s %s",
+				      Client_ID(Prefix), Buffer);
 		else if (Conn_Flag(conn) == SEND_TO_USER)
-			ok = Conn_WriteStr(conn, ":%s %s",
-					   Client_MaskCloaked(Prefix), Buffer);
-		if (!ok)
-			break;
+			Conn_WriteStr(conn, ":%s %s",
+				      Client_MaskCloaked(Prefix), Buffer);
 		conn = Conn_Next( conn );
 	}
-	return ok;
 }


diff --git a/src/ngircd/irc-write.h b/src/ngircd/irc-write.h
index dc8dec209157a64c9ad6cdcf625291ec17fbaca9..
index ..ddfe2f0e1d5e172a543269051e91decd38873257 100644
--- a/src/ngircd/irc-write.h
+++ b/src/ngircd/irc-write.h
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,9 +21,9 @@ GLOBAL bool IRC_WriteStrClient PARAMS((CLIENT *Client, const char *Format, ...))
 GLOBAL bool IRC_WriteStrClientPrefix PARAMS((CLIENT *Client, CLIENT *Prefix,
 		const char *Format, ...));

-GLOBAL bool IRC_WriteStrChannel PARAMS((CLIENT *Client, CHANNEL *Chan,
+GLOBAL void IRC_WriteStrChannel PARAMS((CLIENT *Client, CHANNEL *Chan,
 		bool Remote, const char *Format, ...));
-GLOBAL bool IRC_WriteStrChannelPrefix PARAMS((CLIENT *Client, CHANNEL *Chan,
+GLOBAL void IRC_WriteStrChannelPrefix PARAMS((CLIENT *Client, CHANNEL *Chan,
 		CLIENT *Prefix, bool Remote, const char *Format, ...));

 GLOBAL void IRC_WriteStrServers PARAMS((CLIENT *ExceptOf,
@@ -36,7 +36,7 @@ GLOBAL void IRC_WriteStrServersPrefixFlag_CB PARAMS((CLIENT *ExceptOf,
 		CLIENT *Prefix, char Flag,
 		void (*callback)(CLIENT *, CLIENT *, void *), void *cb_data));

-GLOBAL bool IRC_WriteStrRelatedPrefix PARAMS((CLIENT *Client, CLIENT *Prefix,
+GLOBAL void IRC_WriteStrRelatedPrefix PARAMS((CLIENT *Client, CLIENT *Prefix,
 		bool Remote, const char *Format, ...));

 GLOBAL void IRC_SendWallops PARAMS((CLIENT *Client, CLIENT *From,

-----END OF PAGE-----