Commit Graph

98 Commits

Author SHA1 Message Date
Marcelo Pires ccaae97f5b Support {readTimeout,maxBodySize,writeTimeout} per request based on the headers. (#598) 2019-07-12 14:42:07 +02:00
Maxim Lebedev d3715c361c Used Headers constants instead raw strings 2019-05-28 18:04:24 +03:00
Erik Dubbelboer 15dbe35bb5 Timing fixes (#564)
- Improved timing code to be much cleaner
- Add IdleTimeout
- Remove obsolete optimization (was fixed in Go 2 years ago: https://github.com/golang/go/issues/15133#issuecomment-271571395)
2019-04-29 16:12:47 +03:00
Tiago Peczenyj 0558e349d7 fix context Err() issue (#544)
* fix context Err() issue

Co-Authored-By: peczenyj <tiago.peczenyj@gmail.com>
2019-02-16 10:53:21 +00:00
Erik Dubbelboer 51532b9517 Shutdown close channel returned by RequestCtx.Done
RequestCtx.Done() now returns a channel that will be closed when
Server.Shutdown() is called.
2019-02-02 12:23:32 +01:00
Erik Dubbelboer 9793e28938 Add test for ConnState 2019-01-03 22:23:27 +01:00
Erik Dubbelboer efe4585c98 Make RequestCtx implement context.Context
fixes #459
2018-11-16 00:22:29 +08:00
Berezhnoy Pavel e771b6fe43 #457: allow to rewrite system error response (#458)
* #457: allow to rewrite system error response

* #457: review fixes

* #457: more review issues fixed
2018-11-13 15:41:42 +03:00
Erik Dubbelboer 573be81328 Hopefully fix TestShutdownReuse flakiness 2018-10-14 10:18:21 +02:00
David Byttow da9ba61e3b Allows for empty content type by default. Fixes #214 2018-09-19 01:28:32 +03:00
Erik Dubbelboer 761869f3f8 Close the file before trying to rename in SaveMultipartFile
On Windows systems it is not possible to rename files that are opened.
2018-09-13 12:39:45 +08:00
Erik Dubbelboer c6fd90e432 Don't suppresses TLS related errors
See https://github.com/valyala/fasthttp/issues/300
2018-09-05 20:07:23 +03:00
Erik Dubbelboer 5b46f8ddc5 Added support for multiple TLS domains
See: https://github.com/erikdubbelboer/fasthttp/pull/24
2018-08-25 20:11:58 +03:00
Erik Dubbelboer 9b72466ae0 Stop random TestServerErrSmallBuffer failures
TestServerErrSmallBuffer had a small race condition where the test would
checkout the output of the logger after the client connection had been
served but before the worker had written the result to the logger.

This new code is also much faster as it doesn't actually use TCP but
just some in memory buffers.
2018-08-25 16:57:27 +03:00
Erik Dubbelboer d84d8ea604 Allow removal of the Server header in responses
his PR adds an option to the Server called `NoDefaultServerHeader` that
allows a user to indicate that neither the Server's `Name` field nor
the `defaultServerName` should be included in the Server's responses
as a `Server` header by default.

Now when `ResponseHeader.AppendBytes` is found to have an empty `server`
field, it simply skips the `Server` header. Previously that method
would write the `defaultServerName` when no value was found. The only
code paths that took advantage of that were ones originating from
`writeErrorResponse`, which now handles setting the server name
directly.

Fixes: https://github.com/valyala/fasthttp/issues/221
2018-08-25 16:00:48 +03:00
Erik Dubbelboer e3d61d58fd Add Server.Shutdown 2018-08-25 01:39:00 +03:00
Erik Dubbelboer cf6f6e7fca Read GET/HEAD body if it exists
Previously, GET/HEAD bodies were not read. The HTTP 1.1 specification
states:

"A server SHOULD read and forward a message-body on any request; if the
request method does not include defined semantics for an entity-body,
then the message-body SHOULD be ignored when handling the request.
I suspect this code is at fault."

This change reads the body on such request and continues the previous
behavior of returning a "Content-Length" of 0 to the application.

See: https://github.com/valyala/fasthttp/issues/159
2018-08-24 16:21:17 +03:00
Aliaksandr Valialkin 70ceaddfae Added RequestCtx.String that returns unique string representation of the request context 2017-10-18 15:53:05 +03:00
Aliaksandr Valialkin 103adc311e Do not compress responses with sizes smaller than 200 bytes
Compressing small bodies has little sense, since the compressed result size
may exceed the original body size.

This should save CPU time when the server responds with small responses.
2017-05-17 16:17:53 +03:00
Aliaksandr Valialkin b0de56d13b Properly set "https" scheme in RequestCtx.URI() for TLS connections 2017-01-15 00:26:21 +02:00
Aliaksandr Valialkin 21021ceb31 Added a test for redirecting from https to schemeless url 2017-01-14 23:40:56 +02:00
Aliaksandr Valialkin 1913bdea45 Set 'Connection: close' response header when server couldn't parse or accept incoming request 2016-11-17 13:50:15 +02:00
Aliaksandr Valialkin e0618f8ef5 an attempt to localize travis failure on TestServerErrSmallBuffer 2016-11-14 22:56:00 +02:00
Aliaksandr Valialkin 78e415082d an attempt to fix travis build 2016-11-14 22:40:43 +02:00
Aliaksandr Valialkin 02fe9b8533 Issue #173: return valid response instead of silently closing connection on request parsing errors 2016-11-10 18:09:23 +02:00
Aliaksandr Valialkin 935c556b36 Added RequestCtx.Hijacked method for determining whether the underlying connection is hijacked 2016-10-21 14:33:22 +03:00
Aliaksandr Valialkin e0c9f3d5ff typo fixes in comments 2016-10-13 17:39:06 +03:00
Aliaksandr Valialkin 2662f2e1f4 Allow redirecting to urls without scheme, i.e. //google.com/foo.bar 2016-08-17 18:55:32 +03:00
Aliaksandr Valialkin 5210f60181 Detect overriden TLS connections in RequestCtx.IsTLS and RequestCtx.TLSConnectionState 2016-08-17 18:01:59 +03:00
Gerasimos Maropoulos 006fac3cba Implement VisitUserValues - https://github.com/valyala/fasthttp/issues/126 (#129) 2016-07-12 09:40:24 +03:00
Aliaksandr Valialkin d42167fd04 Set response Server header to Server.Name if it is empty. This properly handles #118 2016-06-17 13:13:04 +03:00
Aliaksandr Valialkin efbb037c40 Added RequestCtx.Redirect tests, which cover cases mentioned in https://github.com/kataras/iris/issues/173 2016-06-07 13:30:42 +03:00
Aliaksandr Valialkin 3c5ba2c98d Limit the number of concurrently running request handlers inside TimeoutHandler 2016-06-06 16:47:02 +03:00
Aliaksandr Valialkin b8b31526d7 Do not compress already compressed response in CompressHandler 2016-06-06 14:15:34 +03:00
Aliaksandr Valialkin 90baa054bc Export IsBodyStream on RequestCtx, Request and Response
These methods may help writing proper request handler wrappers
for request handlers, which may set body either via SetBodyStream*
or via usual body methods.
2016-06-03 17:07:13 +03:00
Aliaksandr Valialkin f68634569e Issue #103: Set 'Server' response header before calling user-provided request handler 2016-05-24 15:41:08 +03:00
Aliaksandr Valialkin 57d56c2d34 Fixed flacky TestServerResponseBodyStream 2016-05-24 15:27:30 +03:00
Aliaksandr Valialkin 2d5c6fd01a Added Server.ConnID() for associating distinct requests that come from the same client connection 2016-04-24 22:01:13 +03:00
Aliaksandr Valialkin c9c8d72607 Issue #78: immediately flush chunked data to client 2016-04-15 23:14:38 +03:00
Aliaksandr Valialkin 8d147e45af Issue #76: fixed data races in TimeoutHandler and RequestCtx.TimeoutError*. Updated tests for catching similar data races in the future 2016-04-06 15:08:34 +03:00
Aliaksandr Valialkin 9f20a62336 added workerpool tests 2016-03-31 14:41:27 +03:00
Aliaksandr Valialkin 7d29fb3b3d server: added DisableKeepalive option for disabling keep-alive connections 2016-03-31 10:05:31 +03:00
Aliaksandr Valialkin d444ab9169 Server: write error response when concurrency limit or per-ip conn limit is exceeded before closing the connection. This should improve server diagnostics 2016-03-28 18:42:40 +03:00
Aliaksandr Valialkin 0a85495ae0 Validate multipart form value in server test 2016-03-02 20:15:02 +02:00
Aliaksandr Valialkin 15ffe2f795 Issue #63: added helper functions for starting https server with certificates embedded into the app 2016-03-02 15:23:21 +02:00
Aliaksandr Valialkin 877a47395f Issue #61: use proper content-length in multipart/form-data tests 2016-03-01 18:12:00 +02:00
Aliaksandr Valialkin 8581513fa2 Issue #61: server: properly read multipart/form-data 2016-03-01 18:07:52 +02:00
Aliaksandr Valialkin dd6954f4b2 Issue #57: Server: added ability to disable header names' normalizing 2016-02-25 14:00:04 +02:00
Aliaksandr Valialkin 108d002365 Added tests for Server.ReduceMemoryUsage flag 2016-02-24 15:45:56 +02:00
Aliaksandr Valialkin 115b98672e Make sure that the server always closes connection after HTTP/1.0 request without 'Connection: keep-alive' header 2016-02-22 23:00:36 +02:00