Skip to content

Commit f08e0a2

Browse files
committed
httpbeast: option to set reusePort
1 parent d679e50 commit f08e0a2

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/httpbeast.nim

+7-4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ type
5454
domain*: Domain
5555
numThreads: int
5656
loggers: seq[Logger]
57+
reusePort*: bool
58+
# when false, will fail if --threads is passed or if 2
59+
# processes bind to same address/port
5760

5861
HttpBeastDefect* = ref object of Defect
5962

@@ -63,14 +66,14 @@ const
6366
proc initSettings*(port: Port = Port(8080),
6467
bindAddr: string = "",
6568
numThreads: int = 0,
66-
domain = Domain.AF_INET): Settings =
67-
69+
domain = Domain.AF_INET, reusePort = true): Settings =
6870
Settings(
6971
port: port,
7072
bindAddr: bindAddr,
7173
domain: domain,
7274
numThreads: numThreads,
73-
loggers: getHandlers()
75+
loggers: getHandlers(),
76+
reusePort: reusePort,
7477
)
7578

7679
proc initData(fdKind: FdKind, ip = ""): Data =
@@ -317,7 +320,7 @@ proc eventLoop(params: (OnRequest, Settings)) =
317320

318321
let server = newSocket(settings.domain)
319322
server.setSockOpt(OptReuseAddr, true)
320-
server.setSockOpt(OptReusePort, true)
323+
server.setSockOpt(OptReusePort, settings.reusePort)
321324
server.bindAddr(settings.port, settings.bindAddr)
322325
server.listen()
323326
server.getFd().setBlocking(false)

0 commit comments

Comments
 (0)