mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-15 15:44:14 +00:00
@@ -41,7 +41,7 @@ runnableExamples("-r:off"):
|
||||
|
||||
import asyncnet, asyncdispatch, parseutils, uri, strutils
|
||||
import httpcore
|
||||
from nativesockets import getLocalAddr, AF_INET
|
||||
from nativesockets import getLocalAddr, Domain, AF_INET, AF_INET6
|
||||
import std/private/since
|
||||
|
||||
export httpcore except parseHeader
|
||||
@@ -82,7 +82,7 @@ proc getPort*(self: AsyncHttpServer): Port {.since: (1, 5, 1).} =
|
||||
server.listen(Port(0))
|
||||
assert server.getPort.uint16 > 0
|
||||
server.close()
|
||||
result = getLocalAddr(self.socket.getFd, AF_INET)[1]
|
||||
result = getLocalAddr(self.socket)[1]
|
||||
|
||||
proc newAsyncHttpServer*(reuseAddr = true, reusePort = false,
|
||||
maxBody = 8388608): AsyncHttpServer =
|
||||
@@ -372,13 +372,13 @@ const
|
||||
## This can be set on the command line during compilation
|
||||
## via `-d:nimMaxDescriptorsFallback=N`
|
||||
|
||||
proc listen*(server: AsyncHttpServer; port: Port; address = "") =
|
||||
proc listen*(server: AsyncHttpServer; port: Port; address = ""; domain = AF_INET) =
|
||||
## Listen to the given port and address.
|
||||
when declared(maxDescriptors):
|
||||
server.maxFDs = try: maxDescriptors() except: nimMaxDescriptorsFallback
|
||||
else:
|
||||
server.maxFDs = nimMaxDescriptorsFallback
|
||||
server.socket = newAsyncSocket()
|
||||
server.socket = newAsyncSocket(domain)
|
||||
if server.reuseAddr:
|
||||
server.socket.setSockOpt(OptReuseAddr, true)
|
||||
if server.reusePort:
|
||||
@@ -404,7 +404,8 @@ proc acceptRequest*(server: AsyncHttpServer,
|
||||
proc serve*(server: AsyncHttpServer, port: Port,
|
||||
callback: proc (request: Request): Future[void] {.closure, gcsafe.},
|
||||
address = "";
|
||||
assumedDescriptorsPerRequest = -1) {.async.} =
|
||||
assumedDescriptorsPerRequest = -1;
|
||||
domain = AF_INET) {.async.} =
|
||||
## Starts the process of listening for incoming HTTP connections on the
|
||||
## specified address and port.
|
||||
##
|
||||
@@ -417,7 +418,7 @@ proc serve*(server: AsyncHttpServer, port: Port,
|
||||
##
|
||||
## You should prefer to call `acceptRequest` instead with a custom server
|
||||
## loop so that you're in control over the error handling and logging.
|
||||
listen server, port, address
|
||||
listen server, port, address, domain
|
||||
while true:
|
||||
if shouldAcceptRequest(server, assumedDescriptorsPerRequest):
|
||||
var (address, client) = await server.socket.acceptAddr()
|
||||
|
||||
@@ -6,7 +6,7 @@ tgcsafety.nim(31, 18) Error: type mismatch: got <AsyncHttpServer, Port, proc (re
|
||||
but expected one of:
|
||||
proc serve(server: AsyncHttpServer; port: Port;
|
||||
callback: proc (request: Request): Future[void] {.closure, gcsafe.};
|
||||
address = ""; assumedDescriptorsPerRequest = -1): owned(
|
||||
address = ""; assumedDescriptorsPerRequest = -1; domain = AF_INET): owned(
|
||||
Future[void])
|
||||
first type mismatch at position: 3
|
||||
required type for callback: proc (request: Request): Future[system.void]{.closure, gcsafe.}
|
||||
|
||||
Reference in New Issue
Block a user