fix buffer size for control messages
This commit is contained in:
parent
6f75ffb35c
commit
80c2c50d26
|
@ -1,6 +1,7 @@
|
||||||
import asyncdispatch, asyncnet, os, strformat, strutils, tables
|
import asyncdispatch, asyncnet, os, strformat, strutils, tables
|
||||||
from nativeSockets import Domain, SockType, Protocol
|
from nativeSockets import Domain, SockType, Protocol
|
||||||
from net import IpAddress, Port, isIpAddress, `$`
|
from net import IpAddress, Port, isIpAddress, `$`
|
||||||
|
from posix import CMSG_SPACE
|
||||||
import asyncutils
|
import asyncutils
|
||||||
import ../../message
|
import ../../message
|
||||||
import random
|
import random
|
||||||
|
@ -77,7 +78,8 @@ proc handleServerMessages(conn: ServerConnection) {.async.} =
|
||||||
proc handlePunchdMessages(conn: PunchdConnection) {.async.} =
|
proc handlePunchdMessages(conn: PunchdConnection) {.async.} =
|
||||||
while true:
|
while true:
|
||||||
let fd = conn.sock.getFd.AsyncFD
|
let fd = conn.sock.getFd.AsyncFD
|
||||||
let resp = await fd.asyncRecvMsg(size = 400, cmsgSize = sizeof(AsyncFD))
|
let cmsgSize = CMSG_SPACE(sizeof(AsyncFD).csize_t)
|
||||||
|
let resp = await fd.asyncRecvMsg(400, cmsgSize)
|
||||||
let line = resp.data.strip(leading = false, trailing = true, chars = {'\n'})
|
let line = resp.data.strip(leading = false, trailing = true, chars = {'\n'})
|
||||||
echo "received punchd message: ", line
|
echo "received punchd message: ", line
|
||||||
let args = line.parseArgs(3, 1)
|
let args = line.parseArgs(3, 1)
|
||||||
|
|
|
@ -34,7 +34,7 @@ proc getFd*(cmsg: ControlMessage): AsyncFD =
|
||||||
result = cast[ptr AsyncFD](cmsg.data.cstring)[]
|
result = cast[ptr AsyncFD](cmsg.data.cstring)[]
|
||||||
|
|
||||||
proc asyncRecvMsg*(fd: AsyncFD, size: int = BufferSize,
|
proc asyncRecvMsg*(fd: AsyncFD, size: int = BufferSize,
|
||||||
cmsgSize: int = BufferSize):
|
cmsgSize: csize_t = BufferSize.csize_t):
|
||||||
Future[tuple[data: string, cmsgs: seq[ControlMessage]]] =
|
Future[tuple[data: string, cmsgs: seq[ControlMessage]]] =
|
||||||
var retFuture = newFuture[tuple[data: string,
|
var retFuture = newFuture[tuple[data: string,
|
||||||
cmsgs: seq[ControlMessage]]]("asyncRecvMsg")
|
cmsgs: seq[ControlMessage]]]("asyncRecvMsg")
|
||||||
|
@ -55,7 +55,7 @@ proc asyncRecvMsg*(fd: AsyncFD, size: int = BufferSize,
|
||||||
var msg = Tmsghdr(msg_iov: addr iovec,
|
var msg = Tmsghdr(msg_iov: addr iovec,
|
||||||
msg_iovlen: 1,
|
msg_iovlen: 1,
|
||||||
msg_control: addr cmsgBuffer[0],
|
msg_control: addr cmsgBuffer[0],
|
||||||
msg_controllen: cmsgSize.SockLen)
|
msg_controllen: cmsgBuffer.len.SockLen)
|
||||||
|
|
||||||
let res = recvmsg(sock.SocketHandle, addr msg, 0)
|
let res = recvmsg(sock.SocketHandle, addr msg, 0)
|
||||||
if res < 0:
|
if res < 0:
|
||||||
|
|
Loading…
Reference in New Issue