Skip to content
Closed
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion httpbeast.nimble
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Package

version = "0.3.0"
version = "0.4.0"
author = "Dominik Picheta"
description = "A super-fast epoll-backed and parallel HTTP server."
license = "MIT"
Expand Down
14 changes: 10 additions & 4 deletions src/httpbeast.nim
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ type
domain*: Domain
numThreads: int
loggers: seq[Logger]
reusePort: bool
## controls whether to fail with "Address already in use".
## Setting this to false will raise when `threads` are on.

HttpBeastDefect* = ref object of Defect

Expand All @@ -63,14 +66,15 @@ const
proc initSettings*(port: Port = Port(8080),
bindAddr: string = "",
numThreads: int = 0,
domain = Domain.AF_INET): Settings =

domain = Domain.AF_INET,
reusePort = false): Settings =
Comment thread
dom96 marked this conversation as resolved.
Outdated
Settings(
port: port,
bindAddr: bindAddr,
domain: domain,
numThreads: numThreads,
loggers: getHandlers()
loggers: getHandlers(),
reusePort: reusePort,
)

proc initData(fdKind: FdKind, ip = ""): Data =
Expand Down Expand Up @@ -317,7 +321,9 @@ proc eventLoop(params: (OnRequest, Settings)) =

let server = newSocket(settings.domain)
server.setSockOpt(OptReuseAddr, true)
server.setSockOpt(OptReusePort, true)
if compileOption("threads") and not settings.reusePort:
raise HttpBeastDefect(msg: "--threads:on requires reusePort to be enabled in settings")
server.setSockOpt(OptReusePort, settings.reusePort)
Comment thread
dom96 marked this conversation as resolved.
server.bindAddr(settings.port, settings.bindAddr)
server.listen()
server.getFd().setBlocking(false)
Expand Down