+static bool process_meta(connection_t *c, char *reqbuf, int *len) {
+ while(*len) {
+ if(c->tcplen) {
+ if(c->tcplen > *len)
+ break;
+
+ receive_tcppacket(c, reqbuf, c->tcplen);
+
+ memmove(reqbuf, reqbuf, *len - c->tcplen);
+ *len -= c->tcplen;
+ } else {
+ char *end = memchr(reqbuf, '\n', *len);
+ if(!end)
+ break;
+ else
+ *end++ = 0;
+
+ if(!receive_request(c, reqbuf))
+ return false;
+
+ memmove(reqbuf, end, *len - (end - reqbuf));
+ *len -= end - reqbuf;
+ }
+ }
+
+ return true;
+}
+