mirror of https://github.com/gofiber/fiber.git
parent
b8fbaca1ea
commit
20cba2604b
12
app.go
12
app.go
|
@ -109,6 +109,7 @@ type Settings struct {
|
|||
ETag bool `json:"etag"`
|
||||
|
||||
// Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only)
|
||||
// Prefork is not support for IPv6 addresses
|
||||
// Default: "tcp"
|
||||
Network string
|
||||
|
||||
|
@ -489,12 +490,11 @@ func (app *App) Listen(address interface{}, tlsconfig ...*tls.Config) error {
|
|||
app.init()
|
||||
// Start prefork
|
||||
if app.Settings.Prefork {
|
||||
if app.Settings.Network == "ipv6" || isIPv6(addr) {
|
||||
log.Fatal("prefork does not support ipv6 networking")
|
||||
}
|
||||
return app.prefork(addr, tlsconfig...)
|
||||
}
|
||||
// tcp4 is the default network
|
||||
if isIPv6(addr) {
|
||||
// do some better parsing
|
||||
}
|
||||
// Setup listener
|
||||
ln, err := net.Listen(app.Settings.Network, addr)
|
||||
if err != nil {
|
||||
|
@ -675,10 +675,8 @@ func (app *App) startupMessage(addr string, tls bool, pids string) {
|
|||
logo += `%s __%s / __/ / / /_/ / __/ / %s` + "\n"
|
||||
logo += `%s /_/ /_/_.___/\___/_/%s %s` + "\n"
|
||||
|
||||
// statup details
|
||||
host, port := parseAddr(addr)
|
||||
var (
|
||||
host = strings.Split(addr, ":")[0]
|
||||
port = strings.Split(addr, ":")[1]
|
||||
tlsStr = "FALSE"
|
||||
routesLen = len(app.Routes())
|
||||
osName = utils.ToUpper(runtime.GOOS)
|
||||
|
|
|
@ -32,7 +32,7 @@ func (app *App) prefork(addr string, tlsconfig ...*tls.Config) (err error) {
|
|||
runtime.GOMAXPROCS(1)
|
||||
var ln net.Listener
|
||||
// SO_REUSEPORT is not supported on Windows, use SO_REUSEADDR instead
|
||||
if ln, err = reuseport(app.Settings.Network, addr); err != nil {
|
||||
if ln, err = reuseport("tcp4", addr); err != nil {
|
||||
if !app.Settings.DisableStartupMessage {
|
||||
time.Sleep(100 * time.Millisecond) // avoid colliding with startup message
|
||||
}
|
||||
|
|
11
utils.go
11
utils.go
|
@ -190,14 +190,17 @@ func parseTokenList(noneMatchBytes []byte) []string {
|
|||
return list
|
||||
}
|
||||
|
||||
// func isIPv4(address string) bool {
|
||||
// return strings.Count(address, ":") < 2
|
||||
// }
|
||||
|
||||
func isIPv6(address string) bool {
|
||||
return strings.Count(address, ":") >= 2
|
||||
}
|
||||
|
||||
func parseAddr(raw string) (host, port string) {
|
||||
if i := strings.LastIndex(raw, ":"); i != -1 {
|
||||
return raw[:i], raw[i+1:]
|
||||
}
|
||||
return raw, ""
|
||||
}
|
||||
|
||||
// https://golang.org/src/net/net.go#L113
|
||||
// Helper methods for application#test
|
||||
type testAddr string
|
||||
|
|
Loading…
Reference in New Issue