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

Allow a request path of "*" (for SSDP requests).
event_stream
Nathan Rajlich 14 years ago committed by Ryan Dahl
parent 03970a576d
commit d56a0700d0

@ -93,6 +93,8 @@ static const char *method_strings[] =
, "MKACTIVITY" , "MKACTIVITY"
, "CHECKOUT" , "CHECKOUT"
, "MERGE" , "MERGE"
, "M-SEARCH"
, "NOTIFY"
}; };
@ -575,7 +577,8 @@ size_t http_parser_execute (http_parser *parser,
case 'G': parser->method = HTTP_GET; break; case 'G': parser->method = HTTP_GET; break;
case 'H': parser->method = HTTP_HEAD; break; case 'H': parser->method = HTTP_HEAD; break;
case 'L': parser->method = HTTP_LOCK; 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 'O': parser->method = HTTP_OPTIONS; break;
case 'P': parser->method = HTTP_POST; /* or PROPFIND or PROPPATCH or PUT */ break; case 'P': parser->method = HTTP_POST; /* or PROPFIND or PROPPATCH or PUT */ break;
case 'R': parser->method = HTTP_REPORT; break; case 'R': parser->method = HTTP_REPORT; break;
@ -608,6 +611,8 @@ size_t http_parser_execute (http_parser *parser,
parser->method = HTTP_MOVE; parser->method = HTTP_MOVE;
} else if (index == 1 && ch == 'E') { } else if (index == 1 && ch == 'E') {
parser->method = HTTP_MERGE; parser->method = HTTP_MERGE;
} else if (index == 1 && ch == '-') {
parser->method = HTTP_MSEARCH;
} else if (index == 2 && ch == 'A') { } else if (index == 2 && ch == 'A') {
parser->method = HTTP_MKACTIVITY; parser->method = HTTP_MKACTIVITY;
} }
@ -628,7 +633,7 @@ size_t http_parser_execute (http_parser *parser,
{ {
if (ch == ' ') break; if (ch == ' ') break;
if (ch == '/') { if (ch == '/' || ch == '*') {
MARK(url); MARK(url);
MARK(path); MARK(path);
state = s_req_path; state = s_req_path;

@ -101,6 +101,9 @@ enum http_method
, HTTP_MKACTIVITY , HTTP_MKACTIVITY
, HTTP_CHECKOUT , HTTP_CHECKOUT
, HTTP_MERGE , HTTP_MERGE
/* ssdp */
, HTTP_MSEARCH
, HTTP_NOTIFY
}; };

@ -557,6 +557,31 @@ const struct message requests[] =
,.body= "" ,.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 */ , {.name= NULL } /* sentinel */
}; };

Loading…
Cancel
Save