|
|
@ -947,6 +947,7 @@ size_t http_parser_execute (http_parser *parser,
|
|
|
|
if (parser->index == 1 && ch == 'E') {
|
|
|
|
if (parser->index == 1 && ch == 'E') {
|
|
|
|
parser->method = HTTP_SEARCH;
|
|
|
|
parser->method = HTTP_SEARCH;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
SET_ERRNO(HPE_INVALID_METHOD);
|
|
|
|
goto error;
|
|
|
|
goto error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (parser->index == 1 && parser->method == HTTP_POST) {
|
|
|
|
} else if (parser->index == 1 && parser->method == HTTP_POST) {
|
|
|
@ -957,13 +958,27 @@ size_t http_parser_execute (http_parser *parser,
|
|
|
|
} else if (ch == 'A') {
|
|
|
|
} else if (ch == 'A') {
|
|
|
|
parser->method = HTTP_PATCH;
|
|
|
|
parser->method = HTTP_PATCH;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
SET_ERRNO(HPE_INVALID_METHOD);
|
|
|
|
goto error;
|
|
|
|
goto error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (parser->index == 2) {
|
|
|
|
} else if (parser->index == 2) {
|
|
|
|
if (parser->method == HTTP_PUT) {
|
|
|
|
if (parser->method == HTTP_PUT) {
|
|
|
|
if (ch == 'R') parser->method = HTTP_PURGE;
|
|
|
|
if (ch == 'R') {
|
|
|
|
|
|
|
|
parser->method = HTTP_PURGE;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
SET_ERRNO(HPE_INVALID_METHOD);
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
} else if (parser->method == HTTP_UNLOCK) {
|
|
|
|
} else if (parser->method == HTTP_UNLOCK) {
|
|
|
|
if (ch == 'S') parser->method = HTTP_UNSUBSCRIBE;
|
|
|
|
if (ch == 'S') {
|
|
|
|
|
|
|
|
parser->method = HTTP_UNSUBSCRIBE;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
SET_ERRNO(HPE_INVALID_METHOD);
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
SET_ERRNO(HPE_INVALID_METHOD);
|
|
|
|
|
|
|
|
goto error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') {
|
|
|
|
} else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') {
|
|
|
|
parser->method = HTTP_PROPPATCH;
|
|
|
|
parser->method = HTTP_PROPPATCH;
|
|
|
|