tomh / rpms / bip

Forked from rpms/bip 4 years ago
Clone
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