@@ -965,7 +965,7 @@ size_t http_parser_execute (http_parser *parser,
965
965
case 'D' : parser -> method = HTTP_DELETE ; break ;
966
966
case 'G' : parser -> method = HTTP_GET ; break ;
967
967
case 'H' : parser -> method = HTTP_HEAD ; break ;
968
- case 'L' : parser -> method = HTTP_LOCK ; break ;
968
+ case 'L' : parser -> method = HTTP_LOCK ; /* or LINK */ break ;
969
969
case 'M' : parser -> method = HTTP_MKCOL ; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH, MKCALENDAR */ break ;
970
970
case 'N' : parser -> method = HTTP_NOTIFY ; break ;
971
971
case 'O' : parser -> method = HTTP_OPTIONS ; break ;
@@ -975,7 +975,7 @@ size_t http_parser_execute (http_parser *parser,
975
975
case 'R' : parser -> method = HTTP_REPORT ; /* or REBIND */ break ;
976
976
case 'S' : parser -> method = HTTP_SUBSCRIBE ; /* or SEARCH */ break ;
977
977
case 'T' : parser -> method = HTTP_TRACE ; break ;
978
- case 'U' : parser -> method = HTTP_UNLOCK ; /* or UNSUBSCRIBE, UNBIND */ break ;
978
+ case 'U' : parser -> method = HTTP_UNLOCK ; /* or UNSUBSCRIBE, UNBIND, UNLINK */ break ;
979
979
default :
980
980
SET_ERRNO (HPE_INVALID_METHOD );
981
981
goto error ;
@@ -1038,16 +1038,25 @@ size_t http_parser_execute (http_parser *parser,
1038
1038
SET_ERRNO (HPE_INVALID_METHOD );
1039
1039
goto error ;
1040
1040
}
1041
- } else if (parser -> index == 1 && parser -> method == HTTP_POST ) {
1042
- if (ch == 'R' ) {
1043
- parser -> method = HTTP_PROPFIND ; /* or HTTP_PROPPATCH */
1044
- } else if (ch == 'U' ) {
1045
- parser -> method = HTTP_PUT ; /* or HTTP_PURGE */
1046
- } else if (ch == 'A' ) {
1047
- parser -> method = HTTP_PATCH ;
1048
- } else {
1049
- SET_ERRNO (HPE_INVALID_METHOD );
1050
- goto error ;
1041
+ } else if (parser -> index == 1 ) {
1042
+ if (parser -> method == HTTP_POST ) {
1043
+ if (ch == 'R' ) {
1044
+ parser -> method = HTTP_PROPFIND ; /* or HTTP_PROPPATCH */
1045
+ } else if (ch == 'U' ) {
1046
+ parser -> method = HTTP_PUT ; /* or HTTP_PURGE */
1047
+ } else if (ch == 'A' ) {
1048
+ parser -> method = HTTP_PATCH ;
1049
+ } else {
1050
+ SET_ERRNO (HPE_INVALID_METHOD );
1051
+ goto error ;
1052
+ }
1053
+ } else if (parser -> method == HTTP_LOCK ) {
1054
+ if (ch == 'I' ) {
1055
+ parser -> method = HTTP_LINK ;
1056
+ } else {
1057
+ SET_ERRNO (HPE_INVALID_METHOD );
1058
+ goto error ;
1059
+ }
1051
1060
}
1052
1061
} else if (parser -> index == 2 ) {
1053
1062
if (parser -> method == HTTP_PUT ) {
@@ -1072,6 +1081,8 @@ size_t http_parser_execute (http_parser *parser,
1072
1081
}
1073
1082
} else if (parser -> index == 4 && parser -> method == HTTP_PROPFIND && ch == 'P' ) {
1074
1083
parser -> method = HTTP_PROPPATCH ;
1084
+ } else if (parser -> index == 3 && parser -> method == HTTP_UNLOCK && ch == 'I' ) {
1085
+ parser -> method = HTTP_UNLINK ;
1075
1086
} else {
1076
1087
SET_ERRNO (HPE_INVALID_METHOD );
1077
1088
goto error ;
0 commit comments