X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresolve.cpp;h=076fea065dee3960abc755d03e816d9fbcac909a;hb=823208d633b0c7352e436513990ecf81d9e67fd4;hp=3896db7a81a5d1c0a3be8ccef6667947e4b814f5;hpb=bdd968802348fae7a7a407616cb3744e4877601a;p=libs%2Fnet.git diff --git a/source/resolve.cpp b/source/resolve.cpp index 3896db7..076fea0 100644 --- a/source/resolve.cpp +++ b/source/resolve.cpp @@ -6,6 +6,7 @@ #endif #include #include +#include "sockaddr_private.h" #include "socket.h" #include "resolve.h" @@ -44,7 +45,12 @@ SockAddr *resolve(const string &s, Family family) int err = getaddrinfo(chost, cserv, &hints, &res); if(err==0) { - SockAddr *addr = SockAddr::create(*res->ai_addr); + SockAddr::SysAddr sa; + sa.size = res->ai_addrlen; + const char *sptr = reinterpret_cast(res->ai_addr); + char *dptr = reinterpret_cast(&sa.addr); + copy(sptr, sptr+res->ai_addrlen, dptr); + SockAddr *addr = SockAddr::from_sys(sa); freeaddrinfo(res); return addr; }