summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vchat-connection.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/vchat-connection.c b/vchat-connection.c
index 7c204fd..a030bbe 100644
--- a/vchat-connection.c
+++ b/vchat-connection.c
@@ -35,6 +35,9 @@
35static int serverfd = -1; 35static int serverfd = -1;
36unsigned int want_tcp_keepalive = 0; 36unsigned int want_tcp_keepalive = 0;
37 37
38#define STAGING_SIZE 16384
39#define RECEIVEBUF_SIZE 4096
40
38/* Generic tcp connector, blocking */ 41/* Generic tcp connector, blocking */
39static int connect_tcp_socket(const char *server, const char *port) { 42static int connect_tcp_socket(const char *server, const char *port) {
40 struct addrinfo hints, *res, *res0; 43 struct addrinfo hints, *res, *res0;
@@ -176,19 +179,18 @@ void vc_disconnect() {
176 loggedin = 0; 179 loggedin = 0;
177} 180}
178 181
179#define STAGINGSIZE 16384
180static char _staging[STAGINGSIZE];
181void vc_sendmessage(const char *msg) { 182void vc_sendmessage(const char *msg) {
182 size_t sent, len = snprintf(_staging, sizeof(_staging), "%s\r\n", msg); 183 static char staging[STAGING_SIZE];
184 size_t sent, len = snprintf(staging, sizeof(staging), "%s\r\n", msg);
183#ifdef DEBUG 185#ifdef DEBUG
184 /* debugging? log network output! */ 186 /* debugging? log network output! */
185 fprintf(dumpfile, ">| (%zd) %s\n", len - 2, msg); 187 fprintf(dumpfile, ">| (%zd) %s\n", len - 2, msg);
186#endif 188#endif
187 189
188 if (getintoption(CF_USESSL)) 190 if (getintoption(CF_USESSL))
189 sent = vc_tls_sendmessage(_staging, len); 191 sent = vc_tls_sendmessage(staging, len);
190 else 192 else
191 sent = write(serverfd, _staging, len); 193 sent = write(serverfd, staging, len);
192 if (sent != len) 194 if (sent != len)
193 writecf(FS_ERR, "Message sending fuzzy."); 195 writecf(FS_ERR, "Message sending fuzzy.");
194} 196}
@@ -197,7 +199,7 @@ void vc_sendmessage(const char *msg) {
197/* get data from servers connection */ 199/* get data from servers connection */
198void vc_receive(void) { 200void vc_receive(void) {
199/* offset in buffer (for linebreaks at packet borders) */ 201/* offset in buffer (for linebreaks at packet borders) */
200 static char buf[4096]; 202 static char buf[RECEIVEBUF_SIZE];
201 static size_t buf_fill; 203 static size_t buf_fill;
202 char *endmsg; 204 char *endmsg;
203 size_t freebytes = sizeof(buf) - buf_fill; 205 size_t freebytes = sizeof(buf) - buf_fill;