|
|
@ -936,6 +936,7 @@ size_t http_parser_execute (http_parser *parser,
|
|
|
|
} else if (parser->index == 2 && ch == 'P') {
|
|
|
|
} else if (parser->index == 2 && ch == 'P') {
|
|
|
|
parser->method = HTTP_COPY;
|
|
|
|
parser->method = HTTP_COPY;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
SET_ERRNO(HPE_INVALID_METHOD);
|
|
|
|
goto error;
|
|
|
|
goto error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (parser->method == HTTP_MKCOL) {
|
|
|
|
} else if (parser->method == HTTP_MKCOL) {
|
|
|
@ -948,12 +949,14 @@ size_t http_parser_execute (http_parser *parser,
|
|
|
|
} else if (parser->index == 2 && ch == 'A') {
|
|
|
|
} else if (parser->index == 2 && ch == 'A') {
|
|
|
|
parser->method = HTTP_MKACTIVITY;
|
|
|
|
parser->method = HTTP_MKACTIVITY;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
SET_ERRNO(HPE_INVALID_METHOD);
|
|
|
|
goto error;
|
|
|
|
goto error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (parser->method == HTTP_SUBSCRIBE) {
|
|
|
|
} else if (parser->method == HTTP_SUBSCRIBE) {
|
|
|
|
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) {
|
|
|
@ -964,13 +967,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;
|
|
|
|