aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2017-03-05 03:36:17 +0100
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2017-03-05 03:36:17 +0100
commit0b8e1a614fae4bdbf529992f04fdaf2cff498d50 (patch)
tree141ebd6f962719cc21c77a22e797912138356dc1 /src
parente80177752184bab0ec4290d1b04da9019690273f (diff)
downloadblogc-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.c19
-rw-r--r--src/blogc-runserver/httpd-utils.h2
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);