diff options
| author | Dirk Engling <erdgeist@erdgeist.org> | 2022-05-24 22:36:01 +0200 |
|---|---|---|
| committer | Dirk Engling <erdgeist@erdgeist.org> | 2022-05-24 22:36:01 +0200 |
| commit | ef780ee52da0845fa679c664e106d93d1142c9ef (patch) | |
| tree | 65b693049e6f7b69381cc4e2a8db46942ce7c06e | |
| parent | d1ebe374b4c02f94eaaaf422943d40a0f40a26cc (diff) | |
Make static input line buf function scoped
| -rw-r--r-- | vchat-connection.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/vchat-connection.c b/vchat-connection.c index 01cf2c2..9770115 100644 --- a/vchat-connection.c +++ b/vchat-connection.c | |||
| @@ -197,21 +197,20 @@ void vc_sendmessage(const char *msg) { | |||
| 197 | writecf(FS_ERR, "Message sending fuzzy."); | 197 | writecf(FS_ERR, "Message sending fuzzy."); |
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | /* offset in buffer (for linebreaks at packet borders) */ | ||
| 201 | #define BUFSIZE 4096 | ||
| 202 | static char _buf[BUFSIZE]; | ||
| 203 | static size_t _buf_fill; | ||
| 204 | 200 | ||
| 205 | /* get data from servers connection */ | 201 | /* get data from servers connection */ |
| 206 | void vc_receive(void) { | 202 | void vc_receive(void) { |
| 203 | /* offset in buffer (for linebreaks at packet borders) */ | ||
| 204 | static char buf[4096]; | ||
| 205 | static size_t buf_fill; | ||
| 207 | char *endmsg; | 206 | char *endmsg; |
| 208 | size_t freebytes = BUFSIZE - _buf_fill; | 207 | size_t freebytes = sizeof(buf) - buf_fill; |
| 209 | ssize_t bytes; | 208 | ssize_t bytes; |
| 210 | 209 | ||
| 211 | if (!getintoption(CF_USESSL)) | 210 | if (!getintoption(CF_USESSL)) |
| 212 | bytes = read(serverfd, _buf + _buf_fill, freebytes); | 211 | bytes = read(serverfd, buf + buf_fill, freebytes); |
| 213 | else | 212 | else |
| 214 | bytes = vc_tls_receivemessage(_buf + _buf_fill, freebytes); | 213 | bytes = vc_tls_receivemessage(buf + buf_fill, freebytes); |
| 215 | 214 | ||
| 216 | /* Our tls functions may require retries with handshakes etc, this is | 215 | /* Our tls functions may require retries with handshakes etc, this is |
| 217 | * signalled by -2 */ | 216 | * signalled by -2 */ |
| @@ -236,26 +235,26 @@ void vc_receive(void) { | |||
| 236 | return; | 235 | return; |
| 237 | } | 236 | } |
| 238 | 237 | ||
| 239 | _buf_fill += bytes; | 238 | buf_fill += bytes; |
| 240 | 239 | ||
| 241 | /* as long as there are lines .. */ | 240 | /* as long as there are lines .. */ |
| 242 | while ((endmsg = memchr(_buf, '\n', _buf_fill)) != NULL) { | 241 | while ((endmsg = memchr(buf, '\n', buf_fill)) != NULL) { |
| 243 | if (endmsg > _buf) { | 242 | if (endmsg > buf) { |
| 244 | /* Zero terminate message, optionally chomp CR */ | 243 | /* Zero terminate message, optionally chomp CR */ |
| 245 | endmsg[0] = 0; | 244 | endmsg[0] = 0; |
| 246 | if (endmsg[-1] == '\r') | 245 | if (endmsg[-1] == '\r') |
| 247 | endmsg[-1] = 0; | 246 | endmsg[-1] = 0; |
| 248 | /* If terminating and chomping left us with a message, give it to line | 247 | /* If terminating and chomping left us with a message, give it to line |
| 249 | * handler */ | 248 | * handler */ |
| 250 | if (_buf[0]) { | 249 | if (buf[0]) { |
| 251 | #ifdef DEBUG | 250 | #ifdef DEBUG |
| 252 | /* debugging? log network input! */ | 251 | /* debugging? log network input! */ |
| 253 | fprintf(stderr, "<| %s\n", _buf); | 252 | fprintf(stderr, "<| %s\n", buf); |
| 254 | #endif | 253 | #endif |
| 255 | protocol_parsemsg(_buf); | 254 | protocol_parsemsg(buf); |
| 256 | } | 255 | } |
| 257 | } | 256 | } |
| 258 | _buf_fill -= 1 + endmsg - _buf; | 257 | buf_fill -= 1 + endmsg - buf; |
| 259 | memmove(_buf, endmsg + 1, _buf_fill); | 258 | memmove(buf, endmsg + 1, buf_fill); |
| 260 | } | 259 | } |
| 261 | } | 260 | } |
