Skip to content

Commit cbfcac2

Browse files
authored
🐛 bug: remove prefork support from custom listeners (#2060)
* 🐛 bug: remove prefork support from custom listeners * Update listen_test.go
1 parent e72ea32 commit cbfcac2

4 files changed

Lines changed: 5 additions & 91 deletions

File tree

helpers.go

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -24,37 +24,6 @@ import (
2424
"github.com/valyala/fasthttp"
2525
)
2626

27-
/* #nosec */
28-
// lnMetadata will close the listener and return the addr and tls config
29-
func lnMetadata(network string, ln net.Listener) (addr string, cfg *tls.Config) {
30-
// Get addr
31-
addr = ln.Addr().String()
32-
33-
// Close listener
34-
if err := ln.Close(); err != nil {
35-
return
36-
}
37-
38-
// Wait for the listener to be closed
39-
var closed bool
40-
for i := 0; i < 10; i++ {
41-
conn, err := net.DialTimeout(network, addr, 3*time.Second)
42-
if err != nil || conn == nil {
43-
closed = true
44-
break
45-
}
46-
_ = conn.Close()
47-
time.Sleep(100 * time.Millisecond)
48-
}
49-
if !closed {
50-
panic("listener: " + addr + ": Only one usage of each socket address (protocol/network address/port) is normally permitted.")
51-
}
52-
53-
cfg = getTlsConfig(ln)
54-
55-
return
56-
}
57-
5827
/* #nosec */
5928
// getTlsConfig returns a net listener's tls config
6029
func getTlsConfig(ln net.Listener) *tls.Config {

helpers_test.go

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
package fiber
66

77
import (
8-
"crypto/tls"
98
"fmt"
10-
"net"
119
"strings"
1210
"testing"
1311
"time"
@@ -260,48 +258,6 @@ func Benchmark_Utils_IsNoCache(b *testing.B) {
260258
utils.AssertEqual(b, true, ok)
261259
}
262260

263-
func Test_Utils_lnMetadata(t *testing.T) {
264-
t.Run("closed listen", func(t *testing.T) {
265-
ln, err := net.Listen(NetworkTCP, ":0")
266-
utils.AssertEqual(t, nil, err)
267-
268-
utils.AssertEqual(t, nil, ln.Close())
269-
270-
addr, config := lnMetadata(NetworkTCP, ln)
271-
272-
utils.AssertEqual(t, ln.Addr().String(), addr)
273-
utils.AssertEqual(t, true, config == nil)
274-
})
275-
276-
t.Run("non tls", func(t *testing.T) {
277-
ln, err := net.Listen(NetworkTCP, ":0")
278-
279-
utils.AssertEqual(t, nil, err)
280-
281-
addr, config := lnMetadata(NetworkTCP4, ln)
282-
283-
utils.AssertEqual(t, ln.Addr().String(), addr)
284-
utils.AssertEqual(t, true, config == nil)
285-
})
286-
287-
t.Run("tls", func(t *testing.T) {
288-
cer, err := tls.LoadX509KeyPair("./.github/testdata/ssl.pem", "./.github/testdata/ssl.key")
289-
utils.AssertEqual(t, nil, err)
290-
291-
config := &tls.Config{Certificates: []tls.Certificate{cer}}
292-
293-
ln, err := net.Listen(NetworkTCP4, ":0")
294-
utils.AssertEqual(t, nil, err)
295-
296-
ln = tls.NewListener(ln, config)
297-
298-
addr, config := lnMetadata(NetworkTCP4, ln)
299-
300-
utils.AssertEqual(t, ln.Addr().String(), addr)
301-
utils.AssertEqual(t, true, config != nil)
302-
})
303-
}
304-
305261
// go test -v -run=^$ -bench=Benchmark_SlashRecognition -benchmem -count=4
306262
func Benchmark_SlashRecognition(b *testing.B) {
307263
search := "wtf/1234"

listen.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@ import (
2626

2727
// Listener can be used to pass a custom listener.
2828
func (app *App) Listener(ln net.Listener) error {
29-
// Prefork is supported for custom listeners
30-
if app.config.Prefork {
31-
addr, tlsConfig := lnMetadata(app.config.Network, ln)
32-
return app.prefork(app.config.Network, addr, tlsConfig)
33-
}
34-
3529
// prepare the server for the start
3630
app.startupProcess()
3731

@@ -45,6 +39,11 @@ func (app *App) Listener(ln net.Listener) error {
4539
app.printRoutesMessage()
4640
}
4741

42+
// Prefork is not supported for custom listeners
43+
if app.config.Prefork {
44+
fmt.Println("[Warning] Prefork isn't supported for custom listeners.")
45+
}
46+
4847
// Start listening
4948
return app.server.Serve(ln)
5049
}

listen_test.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,6 @@ func Test_App_Listener(t *testing.T) {
114114
utils.AssertEqual(t, nil, app.Listener(ln))
115115
}
116116

117-
// go test -run Test_App_Listener_Prefork
118-
func Test_App_Listener_Prefork(t *testing.T) {
119-
testPreforkMaster = true
120-
121-
app := New(Config{DisableStartupMessage: true, Prefork: true})
122-
123-
ln := fasthttputil.NewInmemoryListener()
124-
utils.AssertEqual(t, nil, app.Listener(ln))
125-
}
126-
127117
func Test_App_Listener_TLS_Listener(t *testing.T) {
128118
// Create tls certificate
129119
cer, err := tls.LoadX509KeyPair("./.github/testdata/ssl.pem", "./.github/testdata/ssl.key")

0 commit comments

Comments
 (0)