Add secure field to HTTP_Request to mark whether the underlying connection uses TLS or not
This commit is contained in:
+2
-4
@@ -1003,6 +1003,8 @@ static int parse_request(Scanner *s, HTTP_Request *req)
|
||||
if (!contains_head(s->src + s->cur, s->len - s->cur))
|
||||
return 0;
|
||||
|
||||
req->secure = false;
|
||||
|
||||
if (0) {}
|
||||
else if (consume_str(s, HTTP_STR("GET "))) req->method = HTTP_METHOD_GET;
|
||||
else if (consume_str(s, HTTP_STR("POST "))) req->method = HTTP_METHOD_POST;
|
||||
@@ -1015,10 +1017,6 @@ static int parse_request(Scanner *s, HTTP_Request *req)
|
||||
else if (consume_str(s, HTTP_STR("PATCH "))) req->method = HTTP_METHOD_PATCH;
|
||||
else return -1;
|
||||
|
||||
if (s->cur == s->len || s->src[s->cur] != ' ')
|
||||
return -1;
|
||||
s->cur++;
|
||||
|
||||
{
|
||||
Scanner s2 = *s;
|
||||
int peek = s->cur;
|
||||
|
||||
@@ -65,6 +65,7 @@ typedef struct {
|
||||
} HTTP_Header;
|
||||
|
||||
typedef struct {
|
||||
bool secure;
|
||||
HTTP_Method method;
|
||||
HTTP_URL url;
|
||||
int minor;
|
||||
|
||||
@@ -196,6 +196,8 @@ int http_server_wait(HTTP_Server *server, HTTP_Request **req, HTTP_ResponseBuild
|
||||
server->ready_count--;
|
||||
|
||||
*req = http_engine_getreq(&server->conns[index].engine);
|
||||
(*req)->secure = socket_pool_secure(server->socket_pool, server->conns[index].sock);
|
||||
|
||||
*builder = (HTTP_ResponseBuilder) { server, index, server->conns[index].gen };
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -349,4 +349,9 @@ int socket_pool_read(SocketPool *pool, SocketHandle handle, char *dst, int len)
|
||||
int socket_pool_write(SocketPool *pool, SocketHandle handle, char *src, int len)
|
||||
{
|
||||
return socket_write(&pool->socks[handle], src, len);
|
||||
}
|
||||
|
||||
bool socket_pool_secure(SocketPool *pool, SocketHandle handle)
|
||||
{
|
||||
return socket_secure(&pool->socks[handle]);
|
||||
}
|
||||
@@ -55,4 +55,6 @@ int socket_pool_read(SocketPool *pool, SocketHandle handle, char *dst, int len);
|
||||
|
||||
int socket_pool_write(SocketPool *pool, SocketHandle handle, char *src, int len);
|
||||
|
||||
bool socket_pool_secure(SocketPool *pool, SocketHandle handle);
|
||||
|
||||
#endif // SOCKET_POOL_INCLUDED
|
||||
Reference in New Issue
Block a user