]> jfr.im git - irc/quakenet/snircd.git/blobdiff - ircd/s_bsd.c
merge 07 in
[irc/quakenet/snircd.git] / ircd / s_bsd.c
index 1c3483aaba2a5239151df4c1933586c5925ee886..d69901ba03c40907a5ad842494931a4801835467 100644 (file)
@@ -581,7 +581,7 @@ static int read_packet(struct Client *cptr, int socket_ready)
   unsigned int length = 0;
 
   if (socket_ready &&
-      !(IsUser(cptr) &&
+      !(IsUser(cptr) && !IsOper(cptr) &&
        DBufLength(&(cli_recvQ(cptr))) > feature_int(FEAT_CLIENT_FLOOD))) {
     switch (os_recv_nonb(cli_fd(cptr), readbuf, sizeof(readbuf), &length)) {
     case IO_SUCCESS:
@@ -622,8 +622,11 @@ static int read_packet(struct Client *cptr, int socket_ready)
     if (length > 0 && dbuf_put(&(cli_recvQ(cptr)), readbuf, length) == 0)
       return exit_client(cptr, cptr, &me, "dbuf_put fail");
 
-    if (DBufLength(&(cli_recvQ(cptr))) > feature_int(FEAT_CLIENT_FLOOD))
+    if (IsUser(cptr)) {
+      if (DBufLength(&(cli_recvQ(cptr))) > feature_int(FEAT_CLIENT_FLOOD)
+       && !IsOper(cptr))
       return exit_client(cptr, cptr, &me, "Excess Flood");
+    }
 
     while (DBufLength(&(cli_recvQ(cptr))) && !NoNewLine(cptr) && 
            (IsTrusted(cptr) || cli_since(cptr) - CurrentTime < 10))