diff --git a/0001-Add-support-for-M-SEARCH-and-NOTIFY-request-methods.patch b/0001-Add-support-for-M-SEARCH-and-NOTIFY-request-methods.patch new file mode 100644 index 0000000..e7f2a42 --- /dev/null +++ b/0001-Add-support-for-M-SEARCH-and-NOTIFY-request-methods.patch @@ -0,0 +1,106 @@ +From d56a0700d0d9ccad427995e3da88856a96d2a455 Mon Sep 17 00:00:00 2001 +From: Nathan Rajlich +Date: Tue, 12 Oct 2010 11:23:22 -0700 +Subject: [PATCH 1/2] Add support for "M-SEARCH" and "NOTIFY" request methods. + +Allow a request path of "*" (for SSDP requests). +--- + http_parser.c | 9 +++++++-- + http_parser.h | 3 +++ + test.c | 25 +++++++++++++++++++++++++ + 3 files changed, 35 insertions(+), 2 deletions(-) + +diff --git a/http_parser.c b/http_parser.c +index 492ef17..57a1b94 100644 +--- a/http_parser.c ++++ b/http_parser.c +@@ -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; +diff --git a/http_parser.h b/http_parser.h +index ca7f562..43cc1bd 100644 +--- a/http_parser.h ++++ b/http_parser.h +@@ -101,6 +101,9 @@ enum http_method + , HTTP_MKACTIVITY + , HTTP_CHECKOUT + , HTTP_MERGE ++ /* ssdp */ ++ , HTTP_MSEARCH ++ , HTTP_NOTIFY + }; + + +diff --git a/test.c b/test.c +index d1feae0..e5699aa 100644 +--- a/test.c ++++ b/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 */ + }; + +-- +1.7.3.4 + diff --git a/0002-Added-support-for-SUBSCRIBE-and-UNSUBSCRIBE-request-.patch b/0002-Added-support-for-SUBSCRIBE-and-UNSUBSCRIBE-request-.patch new file mode 100644 index 0000000..ba017be --- /dev/null +++ b/0002-Added-support-for-SUBSCRIBE-and-UNSUBSCRIBE-request-.patch @@ -0,0 +1,63 @@ +From f825b52b7f2d4bf86c3300ae33ceb3dd1fa64571 Mon Sep 17 00:00:00 2001 +From: Nathan Rajlich +Date: Tue, 12 Oct 2010 14:09:34 -0700 +Subject: [PATCH 2/2] Added support for "SUBSCRIBE" and "UNSUBSCRIBE" request methods. + +--- + http_parser.c | 7 ++++++- + http_parser.h | 4 +++- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/http_parser.c b/http_parser.c +index 57a1b94..5a0972a 100644 +--- a/http_parser.c ++++ b/http_parser.c +@@ -95,6 +95,8 @@ static const char *method_strings[] = + , "MERGE" + , "M-SEARCH" + , "NOTIFY" ++ , "SUBSCRIBE" ++ , "UNSUBSCRIBE" + }; + + +@@ -582,8 +584,9 @@ size_t http_parser_execute (http_parser *parser, + 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; ++ case 'S': parser->method = HTTP_SUBSCRIBE; break; + case 'T': parser->method = HTTP_TRACE; break; +- case 'U': parser->method = HTTP_UNLOCK; break; ++ case 'U': parser->method = HTTP_UNLOCK; /* or UNSUBSCRIBE */ break; + default: goto error; + } + state = s_req_method; +@@ -620,6 +623,8 @@ size_t http_parser_execute (http_parser *parser, + parser->method = HTTP_PROPFIND; /* or HTTP_PROPPATCH */ + } else if (index == 1 && parser->method == HTTP_POST && ch == 'U') { + parser->method = HTTP_PUT; ++ } else if (index == 2 && parser->method == HTTP_UNLOCK && ch == 'S') { ++ parser->method = HTTP_UNSUBSCRIBE; + } else if (index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') { + parser->method = HTTP_PROPPATCH; + } else { +diff --git a/http_parser.h b/http_parser.h +index 43cc1bd..c03ec05 100644 +--- a/http_parser.h ++++ b/http_parser.h +@@ -101,9 +101,11 @@ enum http_method + , HTTP_MKACTIVITY + , HTTP_CHECKOUT + , HTTP_MERGE +- /* ssdp */ ++ /* upnp */ + , HTTP_MSEARCH + , HTTP_NOTIFY ++ , HTTP_SUBSCRIBE ++ , HTTP_UNSUBSCRIBE + }; + + +-- +1.7.3.4 + diff --git a/http-parser.spec b/http-parser.spec index 9eeb042..3331730 100644 --- a/http-parser.spec +++ b/http-parser.spec @@ -3,7 +3,7 @@ Name: http-parser Version: %{somajor}.%{sominor} -Release: 4.20100911git%{?dist} +Release: 5.20100911git%{?dist} Summary: HTTP request/response parser for C Group: System Environment/Libraries @@ -13,6 +13,8 @@ URL: http://github.com/ry/http-parser # cd http-parser/ # git archive 459507f5 --prefix=http-parser/ |gzip -9 >../http-parser.tar.gz Source0: http-parser.tar.gz +Patch0: 0001-Add-support-for-M-SEARCH-and-NOTIFY-request-methods.patch +Patch1: 0002-Added-support-for-SUBSCRIBE-and-UNSUBSCRIBE-request-.patch BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) %description @@ -35,6 +37,8 @@ Development headers and libraries for htt-parser. %prep %setup -q -n %{name} +%patch0 -p1 +%patch1 -p1 %build @@ -78,6 +82,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Tue Jan 11 2011 Lubomir Rintel - 0.3-5.20100911git +- Add support for methods used by node.js + * Thu Nov 4 2010 Dan HorĂ¡k - 0.3-4.20100911git - build with -fsigned-char