diff options
| author | Franklin Wei <git@fwei.tk> | 2015-12-27 12:13:02 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-12-27 12:13:02 -0500 |
| commit | 88c66d263b59147280d5dc1f1bdab8ba5031adee (patch) | |
| tree | 06b928c52d0a8431afb8630e2bf5adb91211fc83 /src/client.c | |
| parent | 0a2f9197058cc5248ec8e4bed7c361397c8d1c79 (diff) | |
| download | netcosm-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.c | 19 |
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); } |