diff options
Diffstat (limited to 'src/blogc-runserver')
| -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); | 
