From 3dc43b27e2ab2740acda0514bb0d9562810b3df1 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 21 Apr 2009 11:14:56 -0700 Subject: http11: support underscores in URI hostnames They aren't common, but apparently there exist URLs with them, so we'll support them. --- ext/unicorn/http11/http11_parser.h | 7 +++++-- ext/unicorn/http11/http11_parser_common.rl | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'ext') diff --git a/ext/unicorn/http11/http11_parser.h b/ext/unicorn/http11/http11_parser.h index 67aae71..8d95c59 100644 --- a/ext/unicorn/http11/http11_parser.h +++ b/ext/unicorn/http11/http11_parser.h @@ -808,6 +808,8 @@ st40: if ( ++p == pe ) goto _test_eof40; case 40: + if ( (*p) == 95 ) + goto tr63; if ( (*p) < 48 ) { if ( 45 <= (*p) && (*p) <= 46 ) goto tr63; @@ -828,10 +830,11 @@ st41: if ( ++p == pe ) goto _test_eof41; case 41: -#line 832 "http11_parser.h" +#line 834 "http11_parser.h" switch( (*p) ) { case 47: goto tr65; case 58: goto st42; + case 95: goto st41; } if ( (*p) < 65 ) { if ( 45 <= (*p) && (*p) <= 57 ) @@ -859,7 +862,7 @@ st43: if ( ++p == pe ) goto _test_eof43; case 43: -#line 863 "http11_parser.h" +#line 866 "http11_parser.h" if ( (*p) == 58 ) goto tr59; goto st0; diff --git a/ext/unicorn/http11/http11_parser_common.rl b/ext/unicorn/http11/http11_parser_common.rl index 567ed6b..ae01a55 100644 --- a/ext/unicorn/http11/http11_parser_common.rl +++ b/ext/unicorn/http11/http11_parser_common.rl @@ -25,7 +25,7 @@ # URI schemes and absolute paths scheme = ( "http"i ("s"i)? ) $downcase_char >mark %scheme; - hostname = (alnum | "-" | ".")+; + hostname = (alnum | "-" | "." | "_")+; host_with_port = (hostname (":" digit*)?) >mark %host; path = ( pchar+ ( "/" pchar* )* ) ; -- cgit v1.2.3-24-ge0c7