X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fresolve.cpp;h=8afe0fef1bfbc39a907a754871c5834add0c85c1;hb=7cc338af60428770d72279cbae11f6fe218d2dcd;hp=3896db7a81a5d1c0a3be8ccef6667947e4b814f5;hpb=bdd968802348fae7a7a407616cb3744e4877601a;p=libs%2Fnet.git diff --git a/source/resolve.cpp b/source/resolve.cpp index 3896db7..8afe0fe 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::new_from_sys(sa); freeaddrinfo(res); return addr; }