about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-25 17:25:12 -0500
committerJune McEnroe <june@causal.agency>2020-02-25 17:26:57 -0500
commit34ac9ab3027ad017a4335198f168a03064289241 (patch)
tree21902e1fabe8fd615ed01844b30735c562eb0f42
parentRemove bad assert (diff)
downloadpounce-34ac9ab3027ad017a4335198f168a03064289241.tar.gz
pounce-34ac9ab3027ad017a4335198f168a03064289241.zip
Bump buffer sizes to allow for tags
I still think this limit is unreasonably large in comparison to 512 for
the actual message.
-rw-r--r--bounce.h2
-rw-r--r--client.c10
-rw-r--r--server.c2
3 files changed, 8 insertions, 6 deletions
diff --git a/bounce.h b/bounce.h
index 20d7d40..f95bdc8 100644
--- a/bounce.h
+++ b/bounce.h
@@ -39,6 +39,8 @@
 
 typedef unsigned char byte;
 
+enum { MessageCap = 8191 + 512 };
+
 enum { ParamCap = 15 };
 struct Message {
 	char *origin;
diff --git a/client.c b/client.c
index b3fc32e..93b1716 100644
--- a/client.c
+++ b/client.c
@@ -48,7 +48,7 @@ struct Client {
 	enum Need need;
 	size_t consumer;
 	enum Cap caps;
-	char buf[1024];
+	char buf[MessageCap];
 	size_t len;
 	bool error;
 };
@@ -95,7 +95,7 @@ void clientSend(struct Client *client, const char *ptr, size_t len) {
 }
 
 void clientFormat(struct Client *client, const char *format, ...) {
-	char buf[1024];
+	char buf[MessageCap];
 	va_list ap;
 	va_start(ap, format);
 	int len = vsnprintf(buf, sizeof(buf), format, ap);
@@ -383,7 +383,7 @@ static const char *filterChghost(const char *line) {
 static const char *filterExtendedJoin(const char *line) {
 	if (wordcmp(line, 1, "JOIN")) return line;
 	static regex_t regex;
-	static char buf[512];
+	static char buf[MessageCap + 1];
 	return snip(buf, sizeof(buf), line, compile(&regex, "(JOIN [^ ]+).+"));
 }
 
@@ -393,7 +393,7 @@ static const char *filterInviteNotify(const char *line) {
 }
 
 static const char *filterMultiPrefix(const char *line) {
-	static char buf[512];
+	static char buf[MessageCap + 1];
 	if (!wordcmp(line, 1, "352")) {
 		static regex_t regex;
 		return snip(
@@ -414,7 +414,7 @@ static const char *filterMultiPrefix(const char *line) {
 static const char *filterUserhostInNames(const char *line) {
 	if (wordcmp(line, 1, "353")) return line;
 	static regex_t regex;
-	static char buf[512];
+	static char buf[MessageCap + 1];
 	return snip(
 		buf, sizeof(buf), line,
 		compile(&regex, "( :?[^!]+)![^ ]+")
diff --git a/server.c b/server.c
index 2bb897d..1741f14 100644
--- a/server.c
+++ b/server.c
@@ -149,7 +149,7 @@ void serverFormat(const char *format, ...) {
 }
 
 void serverRecv(void) {
-	static char buf[4096];
+	static char buf[MessageCap];
 	static size_t len;
 
 	ssize_t read = tls_read(client, &buf[len], sizeof(buf) - len);