aboutsummaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-12-27 12:13:02 -0500
committerFranklin Wei <git@fwei.tk>2015-12-27 12:13:02 -0500
commit88c66d263b59147280d5dc1f1bdab8ba5031adee (patch)
tree06b928c52d0a8431afb8630e2bf5adb91211fc83 /src/client.c
parent0a2f9197058cc5248ec8e4bed7c361397c8d1c79 (diff)
downloadnetcosm-88c66d263b59147280d5dc1f1bdab8ba5031adee.zip
netcosm-88c66d263b59147280d5dc1f1bdab8ba5031adee.tar.gz
netcosm-88c66d263b59147280d5dc1f1bdab8ba5031adee.tar.bz2
netcosm-88c66d263b59147280d5dc1f1bdab8ba5031adee.tar.xz
fix some things
Diffstat (limited to 'src/client.c')
-rw-r--r--src/client.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/client.c b/src/client.c
index 090ffa1..99b90e7 100644
--- a/src/client.c
+++ b/src/client.c
@@ -53,8 +53,23 @@ void __attribute__((format(printf,1,2))) out(const char *fmt, ...)
static volatile sig_atomic_t request_complete;
+static int reqs_since_ts;
+static time_t ts = 0;
+
void send_master(unsigned char cmd, const void *data, size_t sz)
{
+ time_t t = time(NULL);
+ if(ts != t)
+ {
+ ts = t;
+ reqs_since_ts = 0;
+ }
+ if(reqs_since_ts++ > 10)
+ {
+ out("Rate limit exceeded.\n");
+ return;
+ }
+
request_complete = 0;
sigset_t block, old;
@@ -105,6 +120,8 @@ tryagain:
goto tryagain;
}
+ remove_cruft(buf);
+
return buf;
}
@@ -484,7 +501,7 @@ auth:
{
char buf[MSG_MAX];
char *what = strtok_r(NULL, "", &save);
- int len = snprintf(buf, sizeof(buf), "%s says %s", current_user, what);
+ int len = snprintf(buf, sizeof(buf), "%s says %s\n", current_user, what);
send_master(REQ_BCASTMSG, buf, len);
}