|
|
937de6f |
From eb5a5e987969282ab7c1414e058ca17838d39b45 Mon Sep 17 00:00:00 2001
|
|
|
937de6f |
From: Fedora Ninjas <bip-owner@fedoraproject.org>
|
|
|
937de6f |
Date: Tue, 24 Jan 2012 09:56:56 -0800
|
|
|
937de6f |
Subject: [PATCH 2/3] Throttle joins to prevent flooding
|
|
|
937de6f |
|
|
|
937de6f |
---
|
|
|
937de6f |
src/irc.c | 6 +++++-
|
|
|
937de6f |
src/irc.h | 1 +
|
|
|
937de6f |
2 files changed, 6 insertions(+), 1 deletions(-)
|
|
|
937de6f |
|
|
Lorenzo Villani |
0dec56a |
diff --git a/src/irc.c b/src/irc.c
|
|
|
937de6f |
index c890ed6..631af6f 100644
|
|
Lorenzo Villani |
0dec56a |
--- a/src/irc.c
|
|
Lorenzo Villani |
0dec56a |
+++ b/src/irc.c
|
|
Lorenzo Villani |
0dec56a |
@@ -16,6 +16,7 @@
|
|
Lorenzo Villani |
0dec56a |
#include <stdlib.h>
|
|
Lorenzo Villani |
0dec56a |
#include <string.h>
|
|
Lorenzo Villani |
0dec56a |
#include <stdio.h>
|
|
Lorenzo Villani |
0dec56a |
+#include <unistd.h>
|
|
Lorenzo Villani |
0dec56a |
#include "util.h"
|
|
Lorenzo Villani |
0dec56a |
#include "irc.h"
|
|
Lorenzo Villani |
0dec56a |
#include "bip.h"
|
|
|
937de6f |
@@ -213,6 +214,8 @@ static void irc_server_join(struct link_server *s)
|
|
Lorenzo Villani |
0dec56a |
WRITE_LINE1(CONN(s), NULL, "JOIN", ci->name);
|
|
Lorenzo Villani |
0dec56a |
else
|
|
Lorenzo Villani |
0dec56a |
WRITE_LINE2(CONN(s), NULL, "JOIN", ci->name, ci->key);
|
|
Lorenzo Villani |
0dec56a |
+
|
|
Lorenzo Villani |
0dec56a |
+ usleep(1000 * JOIN_THROTTLE_MSEC);
|
|
Lorenzo Villani |
0dec56a |
}
|
|
Lorenzo Villani |
0dec56a |
}
|
|
Lorenzo Villani |
0dec56a |
|
|
|
937de6f |
@@ -951,7 +954,8 @@ static int irc_cli_mode(struct link_client *ic, struct line *line)
|
|
Lorenzo Villani |
0dec56a |
|
|
Lorenzo Villani |
0dec56a |
/* This is a wild guess and that sucks. */
|
|
Lorenzo Villani |
0dec56a |
if (!irc_line_elem_equals(line, 0, "MODE") ||
|
|
Lorenzo Villani |
0dec56a |
- strchr(irc_line_elem(line, 2), 'b') == NULL)
|
|
Lorenzo Villani |
0dec56a |
+ (strchr(irc_line_elem(line, 2), 'b') == NULL &&
|
|
Lorenzo Villani |
0dec56a |
+ strchr(irc_line_elem(line, 2), 'q') == NULL))
|
|
Lorenzo Villani |
0dec56a |
return OK_COPY;
|
|
Lorenzo Villani |
0dec56a |
|
|
Lorenzo Villani |
0dec56a |
++ic->who_count;
|
|
Lorenzo Villani |
0dec56a |
diff --git a/src/irc.h b/src/irc.h
|
|
|
937de6f |
index 006aa08..a4964ef 100644
|
|
Lorenzo Villani |
0dec56a |
--- a/src/irc.h
|
|
Lorenzo Villani |
0dec56a |
+++ b/src/irc.h
|
|
Lorenzo Villani |
0dec56a |
@@ -28,6 +28,7 @@
|
|
Lorenzo Villani |
0dec56a |
#define P_SERV "b.i.p"
|
|
Lorenzo Villani |
0dec56a |
#define S_PING "BIPPING"
|
|
Lorenzo Villani |
0dec56a |
#define P_IRCMASK "-bip!bip@" P_SERV
|
|
Lorenzo Villani |
0dec56a |
+#define JOIN_THROTTLE_MSEC 300
|
|
Lorenzo Villani |
0dec56a |
|
|
Lorenzo Villani |
0dec56a |
struct server {
|
|
Lorenzo Villani |
0dec56a |
char *host;
|
|
|
937de6f |
--
|
|
|
937de6f |
1.7.6.5
|
|
|
937de6f |
|