aboutsummaryrefslogtreecommitdiff
path: root/client.go
diff options
context:
space:
mode:
authorGravatar Sergey Ponomarev <stokito@gmail.com> 2023-01-02 06:51:39 +0200
committerGravatar GitHub <noreply@github.com> 2023-01-02 12:51:39 +0800
commit51048b0620ebd25e3bd0c78b53051e02ae33cd3c (patch)
tree62e2ee380cda9a2aa7923dc4b1ab5fee65911a48 /client.go
parentfix: client may remove hostclient incorrectly (#1461) (diff)
downloadfasthttp-51048b0620ebd25e3bd0c78b53051e02ae33cd3c.tar.gz
fasthttp-51048b0620ebd25e3bd0c78b53051e02ae33cd3c.tar.bz2
fasthttp-51048b0620ebd25e3bd0c78b53051e02ae33cd3c.zip
client.go Simplify default UA logic (#1466)
The getClientName() checks if !NoDefaultUserAgentHeader then returns the Client.Name field. But it also saves it to atomic field clientName. This is not needed and logic can be simplified. Previously the clientName vas a byte slice that was copied from c.Name and cached. See 02e0722fb73c6237818b8e5af55957eb919a7334 Fix #1458
Diffstat (limited to 'client.go')
-rw-r--r--client.go57
1 files changed, 21 insertions, 36 deletions
diff --git a/client.go b/client.go
index 263908c..23bfa57 100644
--- a/client.go
+++ b/client.go
@@ -788,7 +788,6 @@ type HostClient struct {
// Connection pool strategy. Can be either LIFO or FIFO (default).
ConnPoolStrategy ConnPoolStrategyType
- clientName atomic.Value
lastUseTime uint32
connsLock sync.Mutex
@@ -1327,9 +1326,14 @@ func (c *HostClient) doNonNilReqResp(req *Request, resp *Response) (bool, error)
userAgentOld := req.Header.UserAgent()
if len(userAgentOld) == 0 {
- req.Header.userAgent = append(req.Header.userAgent[:0], c.getClientName()...)
+ userAgent := c.Name
+ if userAgent == "" && !c.NoDefaultUserAgentHeader {
+ userAgent = defaultUserAgent
+ }
+ if userAgent != "" {
+ req.Header.userAgent = append(req.Header.userAgent[:], userAgent...)
+ }
}
-
if c.Transport != nil {
err := c.Transport(req, resp)
return err == nil, err
@@ -1990,21 +1994,6 @@ func dialAddr(addr string, dial DialFunc, dialDualStack, isTLS bool, tlsConfig *
return conn, nil
}
-func (c *HostClient) getClientName() []byte {
- v := c.clientName.Load()
- var clientName []byte
- if v == nil {
- clientName = []byte(c.Name)
- if len(clientName) == 0 && !c.NoDefaultUserAgentHeader {
- clientName = defaultUserAgent
- }
- c.clientName.Store(clientName)
- } else {
- clientName = v.([]byte)
- }
- return clientName
-}
-
// AddMissingPort adds a port to a host if it is missing.
// A literal IPv6 address in hostport must be enclosed in square
// brackets, as in "[::1]:80", "[::1%lo0]:80".
@@ -2318,7 +2307,6 @@ type pipelineConnClient struct {
tlsConfigLock sync.Mutex
tlsConfig *tls.Config
- clientName atomic.Value
}
type pipelineWork struct {
@@ -2389,7 +2377,13 @@ func (c *pipelineConnClient) DoDeadline(req *Request, resp *Response, deadline t
userAgentOld := req.Header.UserAgent()
if len(userAgentOld) == 0 {
- req.Header.userAgent = append(req.Header.userAgent[:0], c.getClientName()...)
+ userAgent := c.Name
+ if userAgent == "" && !c.NoDefaultUserAgentHeader {
+ userAgent = defaultUserAgent
+ }
+ if userAgent != "" {
+ req.Header.userAgent = append(req.Header.userAgent[:], userAgent...)
+ }
}
w := c.acquirePipelineWork(timeout)
@@ -2490,7 +2484,13 @@ func (c *pipelineConnClient) Do(req *Request, resp *Response) error {
userAgentOld := req.Header.UserAgent()
if len(userAgentOld) == 0 {
- req.Header.userAgent = append(req.Header.userAgent[:0], c.getClientName()...)
+ userAgent := c.Name
+ if userAgent == "" && !c.NoDefaultUserAgentHeader {
+ userAgent = defaultUserAgent
+ }
+ if userAgent != "" {
+ req.Header.userAgent = append(req.Header.userAgent[:], userAgent...)
+ }
}
w := c.acquirePipelineWork(0)
@@ -2886,19 +2886,4 @@ func (c *pipelineConnClient) PendingRequests() int {
return n
}
-func (c *pipelineConnClient) getClientName() []byte {
- v := c.clientName.Load()
- var clientName []byte
- if v == nil {
- clientName = []byte(c.Name)
- if len(clientName) == 0 && !c.NoDefaultUserAgentHeader {
- clientName = defaultUserAgent
- }
- c.clientName.Store(clientName)
- } else {
- clientName = v.([]byte)
- }
- return clientName
-}
-
var errPipelineConnStopped = errors.New("pipeline connection has been stopped")