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