]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Refactor IRC_WriteStr{Channel|Related}Prefix(); support cloaking
authorAlexander Barton <alex@barton.de>
Tue, 17 Aug 2010 19:11:37 +0000 (21:11 +0200)
committerAlexander Barton <alex@barton.de>
Tue, 17 Aug 2010 19:11:37 +0000 (21:11 +0200)
Move common code to new local function Send_Marked_Connections()
and respect hostname cloaking.

src/ngircd/irc-write.c

index dd592f0db54d11c297291a9f9462e2d8ad2fcd0b..fdc0488b463555503256d4f9369c428bd31f986f 100644 (file)
@@ -39,6 +39,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));
 
 
 #ifdef PROTOTYPES
@@ -159,7 +160,6 @@ const char *Format;
 va_dcl
 #endif
 {
-       bool ok = CONNECTED;
        char buffer[1000];
        CL2CHAN *cl2chan;
        CONN_ID conn;
@@ -201,19 +201,7 @@ va_dcl
                }
                cl2chan = Channel_NextMember( Chan, cl2chan );
        }
-
-       conn = Conn_First( );
-       while( conn != NONE )
-       {
-               /* do we need to send data via this connection? */
-               if( Conn_Flag( conn ) == SEND_TO_SERVER) ok = Conn_WriteStr( conn, ":%s %s", Client_ID( Prefix ), buffer );
-               else if( Conn_Flag( conn ) == SEND_TO_USER ) ok = Conn_WriteStr( conn, ":%s %s", Client_Mask( Prefix ), buffer );
-               if( ! ok ) break;
-
-               conn = Conn_Next( conn );
-       }
-
-       return ok;
+       return Send_Marked_Connections(Prefix, buffer);
 } /* IRC_WriteStrChannelPrefix */
 
 
@@ -346,7 +334,6 @@ const char *Format;
 va_dcl
 #endif
 {
-       bool ok = CONNECTED;
        CL2CHAN *chan_cl2chan, *cl2chan;
        char buffer[1000];
        CHANNEL *chan;
@@ -394,18 +381,7 @@ va_dcl
 
                chan_cl2chan = Channel_NextChannelOf( Client, chan_cl2chan );
        }
-
-       conn = Conn_First( );
-       while( conn != NONE )
-       {
-               /* send data via this connection? */
-               if( Conn_Flag( conn ) == SEND_TO_SERVER ) ok = Conn_WriteStr( conn, ":%s %s", Client_ID( Prefix ), buffer );
-               else if( Conn_Flag( conn ) == SEND_TO_USER ) ok = Conn_WriteStr( conn, ":%s %s", Client_Mask( Prefix ), buffer );
-               if( ! ok ) break;
-
-               conn = Conn_Next( conn );
-       }
-       return ok;
+       return Send_Marked_Connections(Prefix, buffer);
 } /* IRC_WriteStrRelatedPrefix */
 
 
@@ -490,4 +466,29 @@ cb_writeStrServersPrefixFlag(CLIENT *Client, CLIENT *Prefix, void *Buffer)
 } /* cb_writeStrServersPrefixFlag */
 
 
+static bool
+Send_Marked_Connections(CLIENT *Prefix, const char *Buffer)
+{
+       CONN_ID conn;
+       bool ok = CONNECTED;
+
+       assert(Prefix != NULL);
+       assert(Buffer != NULL);
+
+       conn = Conn_First();
+       while (conn != NONE) {
+               if (Conn_Flag(conn) == SEND_TO_SERVER)
+                       ok = 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 = Conn_Next( conn );
+       }
+       return ok;
+}
+
+
 /* -eof- */