diff --git a/spec/unit/request_spec.lua b/spec/unit/request_spec.lua index b3e7972..191ac58 100644 --- a/spec/unit/request_spec.lua +++ b/spec/unit/request_spec.lua @@ -59,7 +59,7 @@ describe('require', function() test('headers', function() local request = getInstance( - { 'GET /Makefile?a=b&c=d&e=1&e=2 HTTP/1.1', 'a: A', 'b: B', 'c: X', 'c: Y', '', 'C=3', '' } + { 'GET /Makefile?a=b&c=d&e=1&e=2 HTTP/1.1', 'a:A', 'b: \t B \t ', 'c: X', 'c: Y', '', 'C=3', '' } ) assert.are.same( diff --git a/src/pegasus/request.lua b/src/pegasus/request.lua index 94622c1..2a0bf3a 100644 --- a/src/pegasus/request.lua +++ b/src/pegasus/request.lua @@ -34,7 +34,7 @@ Request.PATTERN_PROTOCOL = '(HTTP%/%d%.%d)' Request.PATTERN_REQUEST = (Request.PATTERN_METHOD .. Request.PATTERN_PATH ..Request.PATTERN_PROTOCOL) Request.PATTERN_QUERY_STRING = '([^=]*)=([^&]*)&?' -Request.PATTERN_HEADER = '([%w-]+): ([%w %p]+=?)' +Request.PATTERN_HEADER = '([%w-]+):[ \t]*([%w \t%p]*)' function Request:new(port, client, server) local obj = {} @@ -151,6 +151,7 @@ function Request:headers() if key and value then key = key:lower() + value = value:gsub("%s+$", "") -- trim trailing whitespace local v = headers[key] if not v then headers[key] = value