Aliaksandr Valialkin
910e5a9d2a
Added FormFile and FormValue helpers to RequestCtx in order to be on par with net/http
2016-01-08 15:03:02 +02:00
Aliaksandr Valialkin
c5d9023043
Issue #30 : properly handle content-length for HEAD responses
2016-01-05 18:02:50 +02:00
Aliaksandr Valialkin
7f5b710e05
Issue #31 : do not send response body for HEAD requests
2016-01-05 16:53:38 +02:00
Aliaksandr Valialkin
5a483a7e5d
Added a notice that TimeoutError* functions may be used only as a last resort
2015-12-31 10:47:40 +02:00
Aliaksandr Valialkin
95093e35cf
Removed redundant Reset() calls on bufio.Reader/bufio.Writer/gzipWriter/flateWriter before returning them to the pool, since Reset() is immediately called after these instances are obtained from pool
2015-12-29 15:10:14 +02:00
Aliaksandr Valialkin
c5b85a6124
Use default logger if logger passed to RequestCtx.Init() is nill
2015-12-29 11:14:47 +02:00
Aliaksandr Valialkin
3284c3e671
Pull request #24 : added support for '100 Continue' responses and 'Expect: 100-continue' requests. Kudos to @celer
2015-12-25 16:11:20 +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
80105c1a85
Added RequestCtx.WriteString
2015-12-24 20:48:05 +02:00
Aliaksandr Valialkin
d2db95337f
Removed 'v interface{}' hack from structs managed via sync.Pool, since it has no sense
2015-12-23 11:39:40 +02:00
Aliaksandr Valialkin
5379f55d86
Pull request #21 : updated docs
2015-12-20 15:51:13 +02:00
招牌疯子
abc35a8dc2
Redirect 307 instead of 302
2015-12-20 12:32:45 +08:00
Aliaksandr Valialkin
38473d3cf1
Issue #20 : Added TimeoutErrorWithResponse helper function to RequestCtx
2015-12-17 12:25:53 +02:00
Aliaksandr Valialkin
3ab54e2452
Issue #20 : Added TimeoutErrorWithCode helper function to RequestCtx
2015-12-16 21:13:59 +02:00
Aliaksandr Valialkin
b00a213a93
Moved ctx.UserValue from standard map to custom userData. This should improve its' performance for common case when ctx contains up to 10 user values
2015-12-11 16:40:55 +02:00
Aliaksandr Valialkin
400114e9fe
Added RequestCtx.NotFound() helper
2015-12-10 13:22:23 +02:00
Aliaksandr Valialkin
1f36aa1f8f
clarify on why 'Connection: close' response header is set only for non-http/1.1 requests
2015-12-10 11:56:23 +02:00
Aliaksandr Valialkin
71e8c28a95
Issue #16 : properly set 'Connection' response header
2015-12-10 11:47:25 +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
9c18f79145
Added support for If-Modified-Since to SendFile and FS
2015-12-09 18:51:51 +02:00
Aliaksandr Valialkin
1a06baebe3
Refer to SetBodyStreamWriter from SetBodyStream docs
2015-12-09 16:34:50 +02:00
Aliaksandr Valialkin
52999aff94
Added SetBodyStreamWriter for streaming response body
2015-12-09 16:33:07 +02:00
Aliaksandr Valialkin
5f157c097e
Added UserAgent helper to RequestCtx
2015-12-09 13:48:33 +02:00
Aliaksandr Valialkin
6ad39dad61
Added SendFile to Response
2015-12-09 13:47:11 +02:00
Aliaksandr Valialkin
bc50b11813
Added AppendBody and SetBodyString helper methods to Request and Response
2015-12-09 13:43:06 +02:00
Aliaksandr Valialkin
42802cc79f
Spelling fix
2015-12-08 15:21:09 +02:00
Aliaksandr Valialkin
9bac0d4123
Added RequestCtx.SendFile()
2015-12-08 15:18:21 +02:00
Aliaksandr Valialkin
ff63733774
Removed LimitedReader wrapper in writeBodyFixedSize, since it prevents sendfile triggering for FSHandler
2015-12-08 11:50:04 +02:00
Aliaksandr Valialkin
019996b9ea
Added ListenAndServeUNIX
2015-12-07 16:30:14 +02:00
Aliaksandr Valialkin
fab86ba9b4
Mention TimeoutError exception, which may be called when other goroutines access RequestCtx
2015-12-03 13:42:08 +02:00
Aliaksandr Valialkin
4ac44f0c6c
Mention which structs are safe for use from concurrently running goroutines (Server, Client and HostClient) and which structs are unsafe to use from concurrently running goroutines - all the other
2015-12-03 13:38:59 +02:00
Aliaksandr Valialkin
0b6cc4cbad
Issue #13 : add a (k,v) storage inside RequestCtx for user values, which may pass between middlewares
2015-12-02 20:32:49 +02:00
Aliaksandr Valialkin
1ddca5dc04
Added ResetBody
2015-12-02 08:36:31 +02:00
Aliaksandr Valialkin
07a8bf90b4
Properly remove hijack hander from RequestCtx
2015-11-29 22:36:49 +02:00
Aliaksandr Valialkin
4cf82252e3
Added ability to filter out non-GET requests
2015-11-29 12:49:01 +02:00
Aliaksandr Valialkin
fb07cbbd31
Signify that Request and Response from RequestCtx and Header from Request and Response mustn't be copied by value
2015-11-29 12:18:33 +02:00
Aliaksandr Valialkin
1364e4c206
Added IsPut to RequestCtx to be consistent with IsGet and IsPost
2015-11-29 11:37:05 +02:00
Aliaksandr Valialkin
d8c882d360
scalability improvement: initialize RequestCtx.id only when creating new RequestCtx obect. This should reduce globalCtxID contention
2015-11-28 17:23:53 +02:00
Aliaksandr Valialkin
a5a2571194
scalability improvement: make firstByteReader's pool per-server
2015-11-28 17:14:32 +02:00
Aliaksandr Valialkin
78f1cc863a
hijack scalability improvement: make hijacked conn per-server
2015-11-28 17:12:01 +02:00
Aliaksandr Valialkin
8563a2e762
Follow redirects in client Get* and Post* methods. Added Redirect method to RequestCtx.
2015-11-28 14:47:19 +02:00
Aliaksandr Valialkin
d7ecf59c5d
Added Request.RemoveMultipartFormFiles for removing temporary files created during reading multipart/form-data request
2015-11-28 10:32:55 +02:00
Aliaksandr Valialkin
cc79b27b51
Imporoved multipart/form-data support.
...
* The server automatically deletes temporary uploaded files after returning
from RequestHandler.
* Multipart data is automatically streamed into temporary files on request
reading. This limits memory usage for big file uploads.
2015-11-28 10:18:03 +02:00
Aliaksandr Valialkin
01031f43e2
Added support form multipart/form-data POST requests
2015-11-27 16:23:02 +02:00
Aliaksandr Valialkin
df6fda8c33
Added ability to limit request body size on the server and response body size on the client
2015-11-27 13:22:15 +02:00
Aliaksandr Valialkin
c695c83986
Added RequestCtx.IsTLS, which may be used for determining whether the connection is encrypted
2015-11-26 18:55:26 +02:00
Aliaksandr Valialkin
8b00288e0a
Skip br.Buffered() verification, since it is guaranteed it is higher than 0 if br != nil
2015-11-26 12:22:24 +02:00
Aliaksandr Valialkin
9e35210a5a
Fixed possible data race on RequestCtx.TimeoutError if connection's buffered reader is attached to ctx.fbr
2015-11-24 16:56:29 +02:00
Aliaksandr Valialkin
6a90e62dd3
Fixed data race when hijacked conn is backed by firstByteReader, which is attached to RequestCtx
2015-11-24 15:42:52 +02:00
Aliaksandr Valialkin
45ed911251
Improved RequestCtx.Hijack() - now HijackHandler works with the real net.Conn instead of fake io.ReadWriter. Also reduced memory usage by releasing empty read buffers on hijacked connections
2015-11-24 13:55:00 +02:00