Add http error handling
This commit is contained in:
@ -14,9 +14,11 @@
|
||||
#include "../lib/utils.h"
|
||||
#include "../server.h"
|
||||
#include "../lib/res.h"
|
||||
#include "../lib/error.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <errno.h>
|
||||
|
||||
static int request_handler(client_ctx_t *ctx);
|
||||
|
||||
@ -97,20 +99,11 @@ static int request_handler(client_ctx_t *ctx) {
|
||||
ret = http_receive_request(client, req);
|
||||
if (ret != 0) {
|
||||
ctx->c_keep_alive = 0;
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
} else if (ret == 1) {
|
||||
sprintf(err_msg, "Unable to parse http header: Invalid header format.");
|
||||
} else if (ret == 2) {
|
||||
sprintf(err_msg, "Unable to parse http header: Invalid method.");
|
||||
} else if (ret == 3) {
|
||||
sprintf(err_msg, "Unable to parse http header: Invalid version.");
|
||||
} else if (ret == 4) {
|
||||
sprintf(err_msg, "Unable to parse http header: Header contains illegal characters.");
|
||||
} else if (ret == 5) {
|
||||
sprintf(err_msg, "Unable to parse http header: End of header not found.");
|
||||
}
|
||||
res->status = http_get_status(400);
|
||||
error("Unable to receive http header");
|
||||
sprintf(err_msg, "Unable to receive http header: %s.", error_str(errno, buf0, sizeof(buf0)));
|
||||
int err = error_get_http();
|
||||
res->status = http_get_status(err == HTTP_ERROR_URI_TOO_LONG ? 414 : (err == HTTP_ERROR_TOO_MANY_HEADER_FIELDS ? 431 : 400));
|
||||
errno = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user