fixing unfreed memory leak with `freeAddrInfo()` (#425)
* fixing unfreed memory leak with `freeAddrInfo()` * `freeaddrinfo` to `freeAddrInfo()`
This commit is contained in:
parent
d214bcfb4f
commit
5c39bf47be
|
@ -708,7 +708,7 @@ when defined(windows):
|
|||
res: var ptr AddrInfo): cint {.
|
||||
stdcall, dynlib: "ws2_32", importc: "getaddrinfo", sideEffect.}
|
||||
|
||||
proc freeaddrinfo*(ai: ptr AddrInfo) {.
|
||||
proc freeAddrInfo*(ai: ptr AddrInfo) {.
|
||||
stdcall, dynlib: "ws2_32", importc: "freeaddrinfo", sideEffect.}
|
||||
|
||||
proc createIoCompletionPort*(fileHandle: HANDLE,
|
||||
|
@ -880,7 +880,7 @@ elif defined(macos) or defined(macosx):
|
|||
sigemptyset, sigaddset, sigismember, fcntl, accept,
|
||||
pipe, write, signal, read, setsockopt, getsockopt,
|
||||
getcwd, chdir, waitpid, kill, select, pselect,
|
||||
socketpair,
|
||||
socketpair, freeAddrInfo,
|
||||
Timeval, Timespec, Pid, Mode, Time, Sigset, SockAddr,
|
||||
SockLen, Sockaddr_storage, Sockaddr_in, Sockaddr_in6,
|
||||
Sockaddr_un, SocketHandle, AddrInfo, RLimit, TFdSet,
|
||||
|
@ -905,7 +905,7 @@ elif defined(macos) or defined(macosx):
|
|||
sigemptyset, sigaddset, sigismember, fcntl, accept,
|
||||
pipe, write, signal, read, setsockopt, getsockopt,
|
||||
getcwd, chdir, waitpid, kill, select, pselect,
|
||||
socketpair,
|
||||
socketpair, freeAddrInfo,
|
||||
Timeval, Timespec, Pid, Mode, Time, Sigset, SockAddr,
|
||||
SockLen, Sockaddr_storage, Sockaddr_in, Sockaddr_in6,
|
||||
Sockaddr_un, SocketHandle, AddrInfo, RLimit, TFdSet,
|
||||
|
@ -947,7 +947,7 @@ elif defined(linux):
|
|||
unlink, listen, sendmsg, recvmsg, getpid, fcntl,
|
||||
pthread_sigmask, sigprocmask, clock_gettime, signal,
|
||||
getcwd, chdir, waitpid, kill, select, pselect,
|
||||
socketpair,
|
||||
socketpair, freeAddrInfo,
|
||||
ClockId, Itimerspec, Timespec, Sigset, Time, Pid, Mode,
|
||||
SigInfo, Id, Tmsghdr, IOVec, RLimit, Timeval, TFdSet,
|
||||
SockAddr, SockLen, Sockaddr_storage, Sockaddr_in,
|
||||
|
@ -974,7 +974,7 @@ elif defined(linux):
|
|||
unlink, listen, sendmsg, recvmsg, getpid, fcntl,
|
||||
pthread_sigmask, sigprocmask, clock_gettime, signal,
|
||||
getcwd, chdir, waitpid, kill, select, pselect,
|
||||
socketpair,
|
||||
socketpair, freeAddrInfo,
|
||||
ClockId, Itimerspec, Timespec, Sigset, Time, Pid, Mode,
|
||||
SigInfo, Id, Tmsghdr, IOVec, RLimit, TFdSet, Timeval,
|
||||
SockAddr, SockLen, Sockaddr_storage, Sockaddr_in,
|
||||
|
@ -1097,7 +1097,7 @@ elif defined(freebsd) or defined(openbsd) or defined(netbsd) or
|
|||
sigaddset, sigismember, fcntl, accept, pipe, write,
|
||||
signal, read, setsockopt, getsockopt, clock_gettime,
|
||||
getcwd, chdir, waitpid, kill, select, pselect,
|
||||
socketpair,
|
||||
socketpair, freeAddrInfo,
|
||||
Timeval, Timespec, Pid, Mode, Time, Sigset, SockAddr,
|
||||
SockLen, Sockaddr_storage, Sockaddr_in, Sockaddr_in6,
|
||||
Sockaddr_un, SocketHandle, AddrInfo, RLimit, TFdSet,
|
||||
|
@ -1123,7 +1123,7 @@ elif defined(freebsd) or defined(openbsd) or defined(netbsd) or
|
|||
sigaddset, sigismember, fcntl, accept, pipe, write,
|
||||
signal, read, setsockopt, getsockopt, clock_gettime,
|
||||
getcwd, chdir, waitpid, kill, select, pselect,
|
||||
socketpair,
|
||||
socketpair, freeAddrInfo,
|
||||
Timeval, Timespec, Pid, Mode, Time, Sigset, SockAddr,
|
||||
SockLen, Sockaddr_storage, Sockaddr_in, Sockaddr_in6,
|
||||
Sockaddr_un, SocketHandle, AddrInfo, RLimit, TFdSet,
|
||||
|
|
|
@ -298,6 +298,9 @@ proc getAddrInfo(address: string, port: Port, domain: Domain,
|
|||
raises: [TransportAddressError].} =
|
||||
## We have this one copy of ``getAddrInfo()`` because of AI_V4MAPPED in
|
||||
## ``net.nim:getAddrInfo()``, which is not cross-platform.
|
||||
##
|
||||
## Warning: `ptr AddrInfo` returned by `getAddrInfo()` needs to be freed by
|
||||
## calling `freeAddrInfo()`.
|
||||
var hints: AddrInfo
|
||||
var res: ptr AddrInfo = nil
|
||||
hints.ai_family = toInt(domain)
|
||||
|
@ -420,6 +423,7 @@ proc resolveTAddress*(address: string, port: Port,
|
|||
if ta notin res:
|
||||
res.add(ta)
|
||||
it = it.ai_next
|
||||
freeAddrInfo(aiList)
|
||||
res
|
||||
|
||||
proc resolveTAddress*(address: string, domain: Domain): seq[TransportAddress] {.
|
||||
|
|
Loading…
Reference in New Issue