aboutsummaryrefslogtreecommitdiff
path: root/server.go
diff options
context:
space:
mode:
authorGravatar Sergey Ponomarev <stokito@gmail.com> 2023-01-06 05:55:09 +0200
committerGravatar GitHub <noreply@github.com> 2023-01-06 04:55:09 +0100
commit434022b4611dbac1c294c26feac02abe9fb31e3b (patch)
tree94267c88ec3b7f1679929fcac8b1b6e4e0c0ecf7 /server.go
parentclient.go Simplify default UA logic (#1466) (diff)
downloadfasthttp-434022b4611dbac1c294c26feac02abe9fb31e3b.tar.gz
fasthttp-434022b4611dbac1c294c26feac02abe9fb31e3b.tar.bz2
fasthttp-434022b4611dbac1c294c26feac02abe9fb31e3b.zip
server.go Simplify default Server name logic (#1467)
The serverName atomic.Value field is used as a cache. This is not needed and logic can be simplified. See related #1458
Diffstat (limited to 'server.go')
-rw-r--r--server.go40
1 files changed, 15 insertions, 25 deletions
diff --git a/server.go b/server.go
index bb029ec..9c879ac 100644
--- a/server.go
+++ b/server.go
@@ -417,7 +417,6 @@ type Server struct {
concurrency uint32
concurrencyCh chan struct{}
perIPConnCounter perIPConnCounter
- serverName atomic.Value
ctxPool sync.Pool
readerPool sync.Pool
@@ -2134,10 +2133,7 @@ func (s *Server) serveConn(c net.Conn) (err error) {
return handler(c)
}
- var serverName []byte
- if !s.NoDefaultServerHeader {
- serverName = s.getServerName()
- }
+ serverName := s.getServerName()
connRequestNum := uint64(0)
connID := nextConnID()
connTime := time.Now()
@@ -2364,8 +2360,8 @@ func (s *Server) serveConn(c net.Conn) (err error) {
// store req.ConnectionClose so even if it was changed inside of handler
connectionClose = s.DisableKeepalive || ctx.Request.Header.ConnectionClose()
- if serverName != nil {
- ctx.Response.Header.SetServerBytes(serverName)
+ if serverName != "" {
+ ctx.Response.Header.SetServer(serverName)
}
ctx.connID = connID
ctx.connRequestNum = connRequestNum
@@ -2418,8 +2414,8 @@ func (s *Server) serveConn(c net.Conn) (err error) {
ctx.Response.Header.setNonSpecial(strConnection, strKeepAlive)
}
- if serverName != nil && len(ctx.Response.Header.Server()) == 0 {
- ctx.Response.Header.SetServerBytes(serverName)
+ if serverName != "" && len(ctx.Response.Header.Server()) == 0 {
+ ctx.Response.Header.SetServer(serverName)
}
if !hijackNoResponse {
@@ -2812,17 +2808,12 @@ func (s *Server) releaseCtx(ctx *RequestCtx) {
s.ctxPool.Put(ctx)
}
-func (s *Server) getServerName() []byte {
- v := s.serverName.Load()
- var serverName []byte
- if v == nil {
- serverName = []byte(s.Name)
- if len(serverName) == 0 {
+func (s *Server) getServerName() string {
+ serverName := s.Name
+ if serverName == "" {
+ if !s.NoDefaultServerHeader {
serverName = defaultServerName
}
- s.serverName.Store(serverName)
- } else {
- serverName = v.([]byte)
}
return serverName
}
@@ -2830,11 +2821,10 @@ func (s *Server) getServerName() []byte {
func (s *Server) writeFastError(w io.Writer, statusCode int, msg string) {
w.Write(formatStatusLine(nil, strHTTP11, statusCode, s2b(StatusMessage(statusCode)))) //nolint:errcheck
- server := ""
- if !s.NoDefaultServerHeader {
- server = fmt.Sprintf("Server: %s\r\n", s.getServerName())
+ server := s.getServerName()
+ if server != "" {
+ server = fmt.Sprintf("Server: %s\r\n", server)
}
-
date := ""
if !s.NoDefaultDate {
serverDateOnce.Do(updateServerDate)
@@ -2861,7 +2851,7 @@ func defaultErrorHandler(ctx *RequestCtx, err error) {
}
}
-func (s *Server) writeErrorResponse(bw *bufio.Writer, ctx *RequestCtx, serverName []byte, err error) *bufio.Writer {
+func (s *Server) writeErrorResponse(bw *bufio.Writer, ctx *RequestCtx, serverName string, err error) *bufio.Writer {
errorHandler := defaultErrorHandler
if s.ErrorHandler != nil {
errorHandler = s.ErrorHandler
@@ -2869,8 +2859,8 @@ func (s *Server) writeErrorResponse(bw *bufio.Writer, ctx *RequestCtx, serverNam
errorHandler(ctx, err)
- if serverName != nil {
- ctx.Response.Header.SetServerBytes(serverName)
+ if serverName != "" {
+ ctx.Response.Header.SetServer(serverName)
}
ctx.SetConnectionClose()
if bw == nil {