Commit Graph

53 Commits

Author SHA1 Message Date
Aliaksandr Valialkin 12ba989984 Issue #69: Added RequestHeader.Add and ResponseHeader.Add for adding multiple headers with the same key 2016-03-29 17:11:43 +03:00
Aliaksandr Valialkin bfa17b7ae9 do not copy Request and Cookie objects in tests 2016-03-28 17:17:05 +03:00
Aliaksandr Valialkin c469d18819 Issue #72: properly handle 'Connection: keep-alive, Upgrade' header 2016-03-22 19:47:59 +02:00
Aliaksandr Valialkin 38356e216e Issue #64: properly delete header values via Del call 2016-03-10 17:22:59 +02:00
Aliaksandr Valialkin ad8f9d1f6f Issue #57: Exported AppendNormalizedHeaderKey 2016-02-25 21:28:13 +02:00
Aliaksandr Valialkin b8f996c13f Added more tests for keep-alive and non-keep-alive connections during HTTP/1.0 requests 2016-02-22 22:51:12 +02:00
Aliaksandr Valialkin 4a29aeb2bd Added tests for HTTP/1.0 requests regarding 'Connection: close' handling 2016-02-22 18:18:50 +02:00
Aliaksandr Valialkin d95ef5ab6c Added a test for bufferStartEnd 2016-02-18 16:21:04 +02:00
Aliaksandr Valialkin 445fb8a9ae header: skip trailing CRLFs after request/response bodies 2016-02-16 19:37:51 +02:00
Aliaksandr Valialkin 0458fee5cd Issue #15: make sure that io.EOF isn't returned on incomplete request/response 2016-02-05 13:22:03 +02:00
Aliaksandr Valialkin 52d4b7ca38 Issue #15: document that io.EOF is returned from Read* calls on (Request|Response)(Header)? only if the reader is closed before the first byte read 2016-02-05 13:14:36 +02:00
Aliaksandr Valialkin 81b5321d14 Removed misleading ConnectionCloseReal method from RequestHeader 2016-01-17 00:43:34 +02:00
Aliaksandr Valialkin 224aecb81d Added explicit test for keepalive and non-keepalive HTTP/1.0 response 2016-01-17 00:30:13 +02:00
Sebastian Schepens fa88c5b853 Don't assume Content-Encoding: identity when request is 1xx, 204 or 304 2016-01-12 15:23:14 -03:00
Aliaksandr Valialkin 8a83396595 FS: added support for byte range requests 2016-01-05 14:05:07 +02:00
Aliaksandr Valialkin da83f137b7 Added SetMultipartFormBoundary* to RequestHeader 2015-12-31 14:20:21 +02:00
Aliaksandr Valialkin 149f0f38b7 Issue #14: added CompressHandler wrapper for transparent response compression support 2015-12-25 13:33:01 +02:00
Aliaksandr Valialkin 495e130b8f Issue #16: support 'Connection: keep-alive' header for non-http/1.1 requests and/or responses 2015-12-10 11:19:34 +02:00
Aliaksandr Valialkin 6a340b7334 Added request PUT method support 2015-11-29 11:32:44 +02:00
Aliaksandr Valialkin 01031f43e2 Added support form multipart/form-data POST requests 2015-11-27 16:23:02 +02:00
Aliaksandr Valialkin 52c04f13b2 Added support for 'Connection: Upgrade', so RequestHandler may detect such connections and hijack them 2015-11-24 15:48:10 +02:00
Aliaksandr Valialkin 9f7463cd28 Access Cookie members via accessors 2015-11-22 13:29:21 +02:00
Aliaksandr Valialkin 82aca55d5a API consistency fix - GetCookie -> Cookie, PeekCookie -> Cookie 2015-11-22 02:16:05 +02:00
Aliaksandr Valialkin 5407951c06 Do not parse raw headers when writing request headers. This should improve request proxying speed 2015-11-22 00:41:06 +02:00
Aliaksandr Valialkin ed68dfc5f6 Optimization: do not parse full requests headers on ConnectionClose and Header calls. This should speed up common case with GET requests on the server 2015-11-19 12:15:20 +02:00
Aliaksandr Valialkin a2601c68af API consistency change - make Response.StatusCode accessor 2015-11-19 11:39:20 +02:00
Aliaksandr Valialkin 835bf87605 API consistency: Clear -> Reset to be consistent with standard go packages 2015-11-18 17:55:28 +02:00
Aliaksandr Valialkin 81a60d8e4b unoptimize response headers parsing, since it has no positive effect 2015-11-17 11:37:38 +02:00
Aliaksandr Valialkin 63aab18752 do not optimize for content-length access on response headers, since it works slower than full headers parsing 2015-11-17 11:10:52 +02:00
Aliaksandr Valialkin 6e785c7f03 Optimize access to ContentLength() and ConnectionClose() header methods 2015-11-17 10:02:25 +02:00
Aliaksandr Valialkin 9c9c94f4e0 Postpone headers' parsing until first access 2015-11-16 20:22:02 +02:00
Aliaksandr Valialkin 2dbf142a06 convert connectionClose to accessor 2015-11-16 18:23:08 +02:00
Aliaksandr Valialkin c728643d4a Access Content-Length via ContentLength accessor 2015-11-16 18:09:05 +02:00
Aliaksandr Valialkin 88e41d9b08 Removed accessors converting []byte to string, i.e. allocating memory. This should reduce memory usage for apps using fasthttp, since now they shoud either use []byte or do string() conversion on their own :) 2015-11-14 18:25:00 +02:00
Aliaksandr Valialkin 2e78d83bf7 Hide Request.RequestURI behind accessors in order to prevent users shooting in the foot when assigning to Request.RequestURI directly 2015-11-14 17:58:58 +02:00
Aliaksandr Valialkin 1f81c87c38 Substituted direct access to Request.Method by accessors, so package users don't shoot in the foot when assigning directly to Request.Method 2015-11-14 17:34:12 +02:00
Aliaksandr Valialkin 982edd5a7f Treat all errors on first header byte read as EOF. This eliminates numerous and useless 'connection reset by peer' log messages for keep-alive connections on busy server 2015-11-14 12:39:51 +02:00
Aliaksandr Valialkin 48fd01e5e0 Empty request method is equivalent to GET 2015-11-13 16:12:58 +02:00
Aliaksandr Valialkin f1e8e6bf25 Added support for identity responses. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4 for details 2015-11-13 13:33:32 +02:00
Aliaksandr Valialkin 16632cbaa4 Set ConnectionClose for non-http/1.1 requests/responses. Do not support Connection: keep-alive for http/1.0 intentionally, since it will complicate the code without measurable benefits 2015-11-13 12:27:47 +02:00
Aliaksandr Valialkin 6bd9b01126 Added support for 'connection: close' request header 2015-11-12 18:54:15 +02:00
Aliaksandr Valialkin f8ae53ae49 Allow whitespaces in request uri, since certain stupid http clients do not bother escaping request uri :) 2015-11-12 14:14:30 +02:00
Aliaksandr Valialkin 8c92324ef2 Copy cookies in headers' CopyTo() method 2015-11-10 17:39:28 +02:00
Aliaksandr Valialkin d4e9c2ea22 Allow setting cookies via headers' Set*() methods 2015-11-10 17:09:12 +02:00
Aliaksandr Valialkin 980beca55b Added Len() to RequestHeader and ResponseHeader 2015-11-10 16:50:36 +02:00
Aliaksandr Valialkin 6bfe7306fa Do not skip cookies when calling VisitAll() on RequestHeader/ResponseHeader 2015-11-10 16:31:17 +02:00
Aliaksandr Valialkin 236d4bd461 Added Cookie.ParseBytes to be consistent with Args 2015-11-05 12:54:10 +02:00
Aliaksandr Valialkin 87105b99cb Added response cookies support 2015-11-05 12:07:54 +02:00
Aliaksandr Valialkin a0e1b7f448 Added functions for obtaining cookie values from RequestHeader 2015-11-04 18:24:12 +02:00
Aliaksandr Valialkin ee62382f34 Uniformly process all headers 2015-10-20 12:36:33 +03:00