]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-write.c
First check if channel has mode "N", then check membership
[ngircd-alex.git] / src / ngircd / irc-write.c
index 526e2fb694bdf948ccf957f6fafb9a8ca5571d25..8d09f9bcf8eb271672d32de78199fd18e41e26a3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2014 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
@@ -16,7 +16,6 @@
  * Sending IRC commands over the network
  */
 
-#include "imp.h"
 #include <assert.h>
 #ifdef PROTOTYPES
 #      include <stdarg.h>
 #      include <varargs.h>
 #endif
 #include <stdio.h>
-#include <string.h>
 
-#include "defines.h"
 #include "conn-func.h"
 #include "channel.h"
 
-#include "exp.h"
 #include "irc-write.h"
 
 #define SEND_TO_USER 1
@@ -70,7 +66,7 @@ va_dcl
 #else
        va_start(ap);
 #endif
-       vsnprintf(buffer, 1000, Format, ap);
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end(ap);
 
        IRC_SetPenalty(Client, 2);
@@ -107,7 +103,7 @@ va_dcl
 #else
        va_start(ap);
 #endif
-       vsnprintf(buffer, 1000, Format, ap);
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end(ap);
 
        return IRC_WriteStrClientPrefix(Client, Client_ThisServer(),
@@ -148,7 +144,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        return Conn_WriteStr(Client_Conn(Client_NextHop(Client)), ":%s %s",
@@ -190,7 +186,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrChannelPrefix(Client, Chan, Client_ThisServer(),
@@ -239,7 +235,7 @@ va_dcl
 #else
        va_start( ap  );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        Conn_ClearFlags( );
@@ -296,7 +292,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrServersPrefix(ExceptOf, Client_ThisServer(), "%s", buffer);
@@ -333,7 +329,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrServersPrefixFlag( ExceptOf, Prefix, '\0', "%s", buffer );
@@ -373,7 +369,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        IRC_WriteStrServersPrefixFlag_CB(ExceptOf, Prefix, Flag,
@@ -451,7 +447,7 @@ va_dcl
 #else
        va_start( ap );
 #endif
-       vsnprintf( buffer, 1000, Format, ap );
+       vsnprintf(buffer, sizeof(buffer), Format, ap);
        va_end( ap );
 
        Conn_ClearFlags( );
@@ -513,7 +509,7 @@ va_dcl
 #else
        va_start(ap);
 #endif
-       vsnprintf(msg, 1000, Format, ap);
+       vsnprintf(msg, sizeof(msg), Format, ap);
        va_end(ap);
 
        for (to=Client_First(); to != NULL; to=Client_Next(to)) {
@@ -538,24 +534,27 @@ va_dcl
 /**
  * Set a "penalty time" for an IRC client.
  *
- * Note: penalty times are never set for server links!
+ * Note: penalty times are never set for server links or remote clients!
  *
  * @param Client The client.
  * @param Seconds The additional "penalty time" to enforce.
  */
 GLOBAL void
-IRC_SetPenalty( CLIENT *Client, time_t Seconds )
+IRC_SetPenalty(CLIENT *Client, time_t Seconds)
 {
        CONN_ID c;
 
-       assert( Client != NULL );
-       assert( Seconds > 0 );
+       assert(Client != NULL);
+       assert(Seconds > 0);
+
+       if (Client_Type(Client) == CLIENT_SERVER)
+               return;
 
-       if( Client_Type( Client ) == CLIENT_SERVER ) return;
+       c = Client_Conn(Client);
+       if (c <= NONE)
+               return;
 
-       c = Client_Conn( Client );
-       if (c > NONE)
-               Conn_SetPenalty(c, Seconds);
+       Conn_SetPenalty(c, Seconds);
 } /* IRC_SetPenalty */
 
 static const char *