Permalink
Browse files

Add support for "M-SEARCH" and "NOTIFY" request methods.

Allow a request path of "*" (for SSDP requests).
  • Loading branch information...
1 parent 03970a5 commit d56a0700d0d9ccad427995e3da88856a96d2a455 @TooTallNate TooTallNate committed with ry Oct 12, 2010
Showing with 35 additions and 2 deletions.
  1. +7 −2 http_parser.c
  2. +3 −0 http_parser.h
  3. +25 −0 test.c
View
@@ -93,6 +93,8 @@ static const char *method_strings[] =
, "MKACTIVITY"
, "CHECKOUT"
, "MERGE"
+ , "M-SEARCH"
+ , "NOTIFY"
};
@@ -575,7 +577,8 @@ size_t http_parser_execute (http_parser *parser,
case 'G': parser->method = HTTP_GET; break;
case 'H': parser->method = HTTP_HEAD; break;
case 'L': parser->method = HTTP_LOCK; break;
- case 'M': parser->method = HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE */ break;
+ case 'M': parser->method = HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH */ break;
+ case 'N': parser->method = HTTP_NOTIFY; break;
case 'O': parser->method = HTTP_OPTIONS; break;
case 'P': parser->method = HTTP_POST; /* or PROPFIND or PROPPATCH or PUT */ break;
case 'R': parser->method = HTTP_REPORT; break;
@@ -608,6 +611,8 @@ size_t http_parser_execute (http_parser *parser,
parser->method = HTTP_MOVE;
} else if (index == 1 && ch == 'E') {
parser->method = HTTP_MERGE;
+ } else if (index == 1 && ch == '-') {
+ parser->method = HTTP_MSEARCH;
} else if (index == 2 && ch == 'A') {
parser->method = HTTP_MKACTIVITY;
}
@@ -628,7 +633,7 @@ size_t http_parser_execute (http_parser *parser,
{
if (ch == ' ') break;
- if (ch == '/') {
+ if (ch == '/' || ch == '*') {
MARK(url);
MARK(path);
state = s_req_path;
View
@@ -101,6 +101,9 @@ enum http_method
, HTTP_MKACTIVITY
, HTTP_CHECKOUT
, HTTP_MERGE
+ /* ssdp */
+ , HTTP_MSEARCH
+ , HTTP_NOTIFY
};
View
25 test.c
@@ -557,6 +557,31 @@ const struct message requests[] =
,.body= ""
}
+#define MSEARCH_REQ 19
+, {.name= "m-search request"
+ ,.type= HTTP_REQUEST
+ ,.raw= "M-SEARCH * HTTP/1.1\r\n"
+ "HOST: 239.255.255.250:1900\r\n"
+ "MAN: \"ssdp:discover\"\r\n"
+ "ST: \"ssdp:all\"\r\n"
+ "\r\n"
+ ,.should_keep_alive= TRUE
+ ,.message_complete_on_eof= FALSE
+ ,.http_major= 1
+ ,.http_minor= 1
+ ,.method= HTTP_MSEARCH
+ ,.query_string= ""
+ ,.fragment= ""
+ ,.request_path= "*"
+ ,.request_url= "*"
+ ,.num_headers= 3
+ ,.headers= { { "HOST", "239.255.255.250:1900" }
+ , { "MAN", "\"ssdp:discover\"" }
+ , { "ST", "\"ssdp:all\"" }
+ }
+ ,.body= ""
+ }
+
, {.name= NULL } /* sentinel */
};

0 comments on commit d56a070

Please sign in to comment.