Commit Graph

59 Commits

Author SHA1 Message Date
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 cf6efe4c3f Export AcquireRequest, AcquireResponse, ReleaseRequest and ReleaseResponse 2015-12-19 20:25:03 +02:00
Aliaksandr Valialkin f520ed8177 Follow-up tests after the pull request #19: added missing tests 2015-12-16 20:00:17 +02:00
招牌疯子 cd6b2ebf66 Fixed client copy resp from respCopy inversely 2015-12-16 13:50:03 +08:00
Aliaksandr Valialkin 0ac2d5f35e Removed DialTLS*, since it must be handled by client code 2015-12-07 16:44:14 +02:00
Aliaksandr Valialkin 9c70042061 Exported default TCP dialers used by clients, so custom wrappers may be implemented around these dialers 2015-12-07 16:12:28 +02:00
Aliaksandr Valialkin 32022e42d0 Documentation fix for Do() 2015-12-07 13:55:59 +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 3c903772f2 Avoid memory allocation when cleaning stale workers and connections 2015-12-02 08:24:55 +02:00
Aliaksandr Valialkin 235d4932da Check for stale workers and connections every 10 seconds instead of every second. This should reduce cleaners' overhead 2015-12-01 13:42:53 +02:00
Aliaksandr Valialkin a3965934a1 Simplify GC life by zeroing references to closed worker chans and client conns 2015-12-01 13:32:05 +02:00
Aliaksandr Valialkin d0289e11d9 Allow TCP addresses without port in HostClient 2015-11-30 18:22:45 +02:00
Aliaksandr Valialkin f214dc327f Scalability improvement: do not move read workers' queue when cleaning old workers. This should reduce latencies when server serves multi-million concurrent connections 2015-11-30 11:26:39 +02:00
Aliaksandr Valialkin 3a31c4bdef cleaned up some cruft in Client.Do 2015-11-29 12:22:18 +02:00
Aliaksandr Valialkin 3a406649a1 Retry PUT requests as they are idempotent according to http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 2015-11-29 12:07:46 +02:00
Aliaksandr Valialkin a86ebd88ea Issue #7: fixed unaligned 64-bit access on ARM in client code 2015-11-28 20:10:18 +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 87d525b89a Removed unused Logger from Client and HostClient 2015-11-28 10:42:01 +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 a3fd75d237 Eliminated memory allocations from client's DoTimeout and GetTimeout 2015-11-26 17:04:27 +02:00
Aliaksandr Valialkin 79313ec7a9 Fixed a bug in ipv4 addresses resolution if the resolved ip addresses contain non-zero number of ipv6 addresses 2015-11-25 15:23:42 +02:00
Aliaksandr Valialkin 6816e2b03c Clients dial only ipv4 addresses by default due to bad ipv6 support in our networks. Use DialDualStack for dialing both ipv4 and ipv6 addresses 2015-11-25 15:14:31 +02:00
Aliaksandr Valialkin 0fa8e8efc7 Client: dial both tcp4 and tcp6 addresses 2015-11-25 14:30:51 +02:00
Aliaksandr Valialkin 0b2690febe Added GetTimeout method to client 2015-11-25 13:45:34 +02:00
Aliaksandr Valialkin 9decd4d0ac Properly handle negative timeouts in client's DoTimeout 2015-11-24 17:33:25 +02:00
Aliaksandr Valialkin c6fcca3ae6 Added ReadTimeout and WriteTimeout settings to client 2015-11-24 17:14:34 +02:00
Aliaksandr Valialkin 3a1a2ddfc8 Randomize sleep time in Client.DoTimeout when waiting for free connection to the host 2015-11-23 12:26:32 +02:00
Aliaksandr Valialkin 46ac549ae1 Access URI members via accessors 2015-11-22 13:05:24 +02:00
Aliaksandr Valialkin a862d8592a Documentation update 2015-11-22 06:33:58 +02:00
Aliaksandr Valialkin 2d18e84d04 Handle 'no free connections to host' error when doing request with user-defined timeout 2015-11-22 06:00:04 +02:00
Aliaksandr Valialkin dec5ac841c Fixed a bug with improper HostClient map updating in Client.Do. This bug led to new HostClient creation on each Client.Do request 2015-11-22 01:10:41 +02:00
Aliaksandr Valialkin 2b1eca3a70 Optimize request uri parsing - defer Host header reading 2015-11-19 15:05:27 +02:00
Aliaksandr Valialkin 48c0f89ee7 Added Stringer implementations to URI, Args and Cookie 2015-11-19 12:51:34 +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 b838ff99c7 Pass host:port as addr to custom DialFunc in HostClient 2015-11-18 17:20:25 +02:00
Aliaksandr Valialkin 86fe38c7a2 Hide Respone and Request body behind Body accessors 2015-11-18 14:00:24 +02:00
Aliaksandr Valialkin 42fc4078fb Formatting fix 2015-11-17 20:00:26 +02:00
Aliaksandr Valialkin 2dbf142a06 convert connectionClose to accessor 2015-11-16 18:23:08 +02:00
Aliaksandr Valialkin 22461f2c90 Access user-agent via UserAgent accessor 2015-11-16 16:35:35 +02:00
Aliaksandr Valialkin f1f78f0828 Hide Request.URI and Request.PostArgs behind accessors, which automatically call parse URI and PostArgs on first access 2015-11-15 23:47:22 +02:00
Aliaksandr Valialkin 8aef785c1e Added DoTimeout() to client 2015-11-14 23:18:52 +02:00
Aliaksandr Valialkin 1f531237c2 allow nil response in Do() and nil Args in Post() 2015-11-14 22:16:05 +02:00
Aliaksandr Valialkin 734c1a311b Retry idempotent requests on failure 2015-11-14 20:09:49 +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 69f3c67fce Added benchmark for measuring the maximum client throughput 2015-11-13 19:38:46 +02:00
Aliaksandr Valialkin af2218ffaf Add optional Dial callback and TLSConfig to Client 2015-11-13 17:55:54 +02:00
Aliaksandr Valialkin 3648ae63f7 Optimized updating lastUseTime 2015-11-13 16:43:55 +02:00
Aliaksandr Valialkin f8bfa12215 Added Post() method to client 2015-11-13 16:13:22 +02:00
Aliaksandr Valialkin 15cd28e255 do not update HostClient.MaxConns 2015-11-13 11:57:39 +02:00