Implement Transfer-Encoding chunked for requests
This commit is contained in:
@@ -619,3 +619,23 @@ int fastcgi_receive(fastcgi_conn *conn, sock *client, unsigned long len) {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fastcgi_receive_chunked(fastcgi_conn *conn, sock *client) {
|
||||
long ret;
|
||||
unsigned long next_len;
|
||||
char tmp[16];
|
||||
|
||||
do {
|
||||
ret = sock_recv(client, tmp, sizeof(tmp), MSG_PEEK);
|
||||
if (ret < 0) return -2;
|
||||
next_len = strtol(tmp, NULL, 16);
|
||||
char *ptr = strstr(tmp, "\r\n");
|
||||
ret = sock_recv(client, tmp, ptr - tmp + 2, 0);
|
||||
if (ret < 0) return -2;
|
||||
|
||||
ret = fastcgi_receive(conn, client, next_len);
|
||||
if (ret < 0) return ret;
|
||||
} while (next_len > 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user