This repository was archived by the owner on Nov 6, 2022. It is now read-only.
  
  
  
  
    
    
    
      
    
  
  
    
File tree Expand file tree Collapse file tree 2 files changed +19
-2
lines changed Expand file tree Collapse file tree 2 files changed +19
-2
lines changed Original file line number Diff line number Diff line change @@ -123,7 +123,7 @@ do {                                                                 \
123123    FOR ##_mark  =  NULL ;                                               \
124124  }                                                                  \
125125} while  (0 )
126-    
126+ 
127127/* Run the data callback FOR and consume the current byte */ 
128128#define  CALLBACK_DATA (FOR )                                           \
129129    CALLBACK_DATA_(FOR, p - FOR##_mark, p - data + 1)
@@ -1000,6 +1000,13 @@ size_t http_parser_execute (http_parser *parser,
10001000          UPDATE_STATE (s_req_spaces_before_url );
10011001        } else  if  (ch  ==  matcher [parser -> index ]) {
10021002          ; /* nada */ 
1003+         } else  if  (parser -> method  ==  HTTP_LOCK ) {
1004+           if  (parser -> index  ==  1  &&  ch  ==  'I' ) {
1005+             parser -> method  =  HTTP_LINK ;
1006+           } else  {
1007+             SET_ERRNO (HPE_INVALID_METHOD );
1008+             goto error ;
1009+           }
10031010        } else  if  (parser -> method  ==  HTTP_CONNECT ) {
10041011          if  (parser -> index  ==  1  &&  ch  ==  'H' ) {
10051012            parser -> method  =  HTTP_CHECKOUT ;
@@ -1070,6 +1077,13 @@ size_t http_parser_execute (http_parser *parser,
10701077            SET_ERRNO (HPE_INVALID_METHOD );
10711078            goto error ;
10721079          }
1080+         } else  if  (parser -> method  ==  HTTP_UNLOCK  &&  parser -> index  ==  3 ) {
1081+           if  (ch  ==  'I' ) {
1082+             parser -> method  =  HTTP_UNLINK ;
1083+           } else  {
1084+             SET_ERRNO (HPE_INVALID_METHOD );
1085+             goto error ;
1086+           }
10731087        } else  if  (parser -> index  ==  4  &&  parser -> method  ==  HTTP_PROPFIND  &&  ch  ==  'P' ) {
10741088          parser -> method  =  HTTP_PROPPATCH ;
10751089        } else  {
Original file line number Diff line number Diff line change @@ -124,6 +124,9 @@ typedef int (*http_cb) (http_parser*);
124124  XX (29 , PURGE ,       PURGE )        \
125125  /* CalDAV */                       \
126126  XX (30 , MKCALENDAR ,  MKCALENDAR )   \
127+   /* RFC-7237 */                     \
128+   XX (31 , LINK ,        LINK )         \
129+   XX (32 , UNLINK ,      UNLINK )       
127130
128131enum  http_method 
129132  {
@@ -149,7 +152,7 @@ enum flags
149152
150153
151154/* Map for errno-related constants 
152-  *   
155+  * 
153156 * The provided argument should be a macro that takes 2 arguments. 
154157 */ 
155158#define  HTTP_ERRNO_MAP (XX )                                           \
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments