diff options
author | andrewheberle <andrewheberle@users.noreply.github.com> | 2019-08-30 18:22:25 +0800 |
---|---|---|
committer | Erik Dubbelboer <erik@dubbelboer.com> | 2019-08-30 12:22:25 +0200 |
commit | 8ce231e840720d91e22f855ddba797b3b916fc75 (patch) | |
tree | 2f67b09e274b6c49604cc916f53be1e4620a6d2e /reuseport | |
parent | Add fuzzit support (#634) (diff) | |
download | fasthttp-8ce231e840720d91e22f855ddba797b3b916fc75.tar.gz fasthttp-8ce231e840720d91e22f855ddba797b3b916fc75.tar.bz2 fasthttp-8ce231e840720d91e22f855ddba797b3b916fc75.zip |
Add stub/wrapper for reuseport.Listen on Windows platforms (#638)
* Create Windows stub for reuseport.Listen
Diffstat (limited to 'reuseport')
-rw-r--r-- | reuseport/reuseport.go | 13 | ||||
-rw-r--r-- | reuseport/reuseport_error.go | 15 | ||||
-rw-r--r-- | reuseport/reuseport_test.go | 2 | ||||
-rw-r--r-- | reuseport/reuseport_windows.go | 11 | ||||
-rw-r--r-- | reuseport/reuseport_windows_test.go | 18 |
5 files changed, 47 insertions, 12 deletions
diff --git a/reuseport/reuseport.go b/reuseport/reuseport.go index 191fe64..85c7d65 100644 --- a/reuseport/reuseport.go +++ b/reuseport/reuseport.go @@ -1,4 +1,4 @@ -// +build linux darwin dragonfly freebsd netbsd openbsd rumprun +// +build !windows // Package reuseport provides TCP net.Listener with SO_REUSEPORT support. // @@ -9,23 +9,12 @@ package reuseport import ( - "fmt" "net" "strings" "github.com/valyala/tcplisten" ) -// ErrNoReusePort is returned if the OS doesn't support SO_REUSEPORT. -type ErrNoReusePort struct { - err error -} - -// Error implements error interface. -func (e *ErrNoReusePort) Error() string { - return fmt.Sprintf("The OS doesn't support SO_REUSEPORT: %s", e.err) -} - // Listen returns TCP listener with SO_REUSEPORT option set. // // The returned listener tries enabling the following TCP options, which usually diff --git a/reuseport/reuseport_error.go b/reuseport/reuseport_error.go new file mode 100644 index 0000000..3e29d42 --- /dev/null +++ b/reuseport/reuseport_error.go @@ -0,0 +1,15 @@ +package reuseport + +import ( + "fmt" +) + +// ErrNoReusePort is returned if the OS doesn't support SO_REUSEPORT. +type ErrNoReusePort struct { + err error +} + +// Error implements error interface. +func (e *ErrNoReusePort) Error() string { + return fmt.Sprintf("The OS doesn't support SO_REUSEPORT: %s", e.err) +} diff --git a/reuseport/reuseport_test.go b/reuseport/reuseport_test.go index e781ff1..7763d3f 100644 --- a/reuseport/reuseport_test.go +++ b/reuseport/reuseport_test.go @@ -1,3 +1,5 @@ +// +build !windows + package reuseport import ( diff --git a/reuseport/reuseport_windows.go b/reuseport/reuseport_windows.go new file mode 100644 index 0000000..8137eb5 --- /dev/null +++ b/reuseport/reuseport_windows.go @@ -0,0 +1,11 @@ +package reuseport + +import ( + "fmt" + "net" +) + +// Listen always returns ErrNoReusePort on Windows +func Listen(network, addr string) (net.Listener, error) { + return nil, &ErrNoReusePort{fmt.Errorf("Not supported on Windows")} +} diff --git a/reuseport/reuseport_windows_test.go b/reuseport/reuseport_windows_test.go new file mode 100644 index 0000000..9345267 --- /dev/null +++ b/reuseport/reuseport_windows_test.go @@ -0,0 +1,18 @@ +// +build windows + +package reuseport + +import ( + "testing" +) + +func TestListen(t *testing.T) { + _, err := Listen("tcp6", "[::1]:10082") + if err == nil { + t.Fatalf("unexpected non-error creating listener") + } + + if _, errnoreuseport := err.(*ErrNoReusePort); !errnoreuseport { + t.Fatalf("unexpected error creating listener: %s", err) + } +} |