diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2017-03-05 03:36:17 +0100 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2017-03-05 03:36:17 +0100 |
commit | 0b8e1a614fae4bdbf529992f04fdaf2cff498d50 (patch) | |
tree | 141ebd6f962719cc21c77a22e797912138356dc1 /src | |
parent | e80177752184bab0ec4290d1b04da9019690273f (diff) | |
download | blogc-0b8e1a614fae4bdbf529992f04fdaf2cff498d50.tar.gz blogc-0b8e1a614fae4bdbf529992f04fdaf2cff498d50.tar.bz2 blogc-0b8e1a614fae4bdbf529992f04fdaf2cff498d50.zip |
runserver: fixed request read. increased buffer
Diffstat (limited to 'src')
-rw-r--r-- | src/blogc-runserver/httpd-utils.c | 19 | ||||
-rw-r--r-- | src/blogc-runserver/httpd-utils.h | 2 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/blogc-runserver/httpd-utils.c b/src/blogc-runserver/httpd-utils.c index 5e9df2d..e67afb1 100644 --- a/src/blogc-runserver/httpd-utils.c +++ b/src/blogc-runserver/httpd-utils.c @@ -19,16 +19,25 @@ br_readline(int socket) bc_string_t *rv = bc_string_new(); char buffer[READLINE_BUFFER_SIZE]; ssize_t len; + bool end = false; while ((len = read(socket, buffer, READLINE_BUFFER_SIZE)) > 0) { - for (ssize_t i = 0; i < len; i++) { - if (buffer[i] == '\r' || buffer[i] == '\n' || buffer[i] == '\0') - goto end; - bc_string_append_c(rv, buffer[i]); + if (!end) { + for (ssize_t i = 0; i < len; i++) { + if (buffer[i] == '\r' || buffer[i] == '\n' || buffer[i] == '\0') { + // we finished "recording", but still need to exhaust + // request data. + end = true; + break; + } + bc_string_append_c(rv, buffer[i]); + } + } + if (len < READLINE_BUFFER_SIZE) { + break; } } -end: return bc_string_free(rv, false); } diff --git a/src/blogc-runserver/httpd-utils.h b/src/blogc-runserver/httpd-utils.h index 0e62758..026dd5f 100644 --- a/src/blogc-runserver/httpd-utils.h +++ b/src/blogc-runserver/httpd-utils.h @@ -9,7 +9,7 @@ #ifndef _HTTPD_UTILS_H #define _HTTPD_UTILS_H -#define READLINE_BUFFER_SIZE 256 +#define READLINE_BUFFER_SIZE 2048 char* br_readline(int socket); int br_hextoi(const char c); |