diff --git a/includes/http.h b/includes/http.h index 45e5b41..068f7e1 100644 --- a/includes/http.h +++ b/includes/http.h @@ -172,6 +172,7 @@ struct http_file { #define HTTP_METHOD_DELETE 3 #define HTTP_METHOD_HEAD 4 #define HTTP_METHOD_OPTIONS 5 +#define HTTP_METHOD_PATCH 6 #define HTTP_REQUEST_COMPLETE 0x0001 #define HTTP_REQUEST_DELETE 0x0002 diff --git a/src/accesslog.c b/src/accesslog.c index b7b591f..706fe9c 100644 --- a/src/accesslog.c +++ b/src/accesslog.c @@ -88,6 +88,9 @@ kore_accesslog_write(const void *data, u_int32_t len) case HTTP_METHOD_HEAD: method = "HEAD"; break; + case HTTP_METHOD_PATCH: + method = "PATCH"; + break; default: method = "UNKNOWN"; break; diff --git a/src/config.c b/src/config.c index 77ef393..6a6a6eb 100644 --- a/src/config.c +++ b/src/config.c @@ -760,6 +760,8 @@ configure_params(char *options) current_method = HTTP_METHOD_DELETE; } else if (!strcasecmp(argv[0], "head")) { current_method = HTTP_METHOD_HEAD; + } else if (!strcasecmp(argv[0], "patch")) { + current_method = HTTP_METHOD_PATCH; } else { printf("unknown method: %s in params block for %s\n", argv[0], argv[1]); diff --git a/src/http.c b/src/http.c index ad9156b..67e0192 100644 --- a/src/http.c +++ b/src/http.c @@ -234,6 +234,9 @@ http_request_new(struct connection *c, const char *host, } else if (!strcasecmp(method, "options")) { m = HTTP_METHOD_OPTIONS; flags = HTTP_REQUEST_COMPLETE; + } else if (!strcasecmp(method, "patch")) { + m = HTTP_METHOD_PATCH; + flags = HTTP_REQUEST_EXPECT_BODY; } else { http_error_response(c, 400); return (KORE_RESULT_ERROR); @@ -1894,6 +1897,9 @@ http_method_text(int method) case HTTP_METHOD_OPTIONS: r = "OPTIONS"; break; + case HTTP_METHOD_PATCH: + r = "PATCH"; + break; default: r = ""; break; diff --git a/src/python.c b/src/python.c index 7158283..a9f2026 100644 --- a/src/python.c +++ b/src/python.c @@ -107,6 +107,7 @@ static struct { { "METHOD_POST", HTTP_METHOD_POST }, { "METHOD_DELETE", HTTP_METHOD_DELETE }, { "METHOD_OPTIONS", HTTP_METHOD_OPTIONS }, + { "METHOD_PATCH", HTTP_METHOD_PATCH }, { "WEBSOCKET_OP_TEXT", WEBSOCKET_OP_TEXT }, { "WEBSOCKET_OP_BINARY", WEBSOCKET_OP_BINARY }, { "WEBSOCKET_BROADCAST_LOCAL", WEBSOCKET_BROADCAST_LOCAL },