X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsocket.cpp;fp=source%2Fsocket.cpp;h=0e2950930f0e653d7348bcff826d3b0d53fcb57c;hb=dbfb303f336037cf7ca4fca3d8bfe504c624b501;hp=8fa910cbd5a97eb52479a0e18192f18a6425633b;hpb=bdd968802348fae7a7a407616cb3744e4877601a;p=libs%2Fnet.git diff --git a/source/socket.cpp b/source/socket.cpp index 8fa910c..0e29509 100644 --- a/source/socket.cpp +++ b/source/socket.cpp @@ -9,6 +9,7 @@ #include #include #include +#include "sockaddr_private.h" #include "socket.h" #include "socket_private.h" @@ -48,10 +49,9 @@ Socket::Socket(const Private &p, const SockAddr &paddr): { priv->handle = p.handle; - sockaddr_storage sa; - socklen_t size = sizeof(sockaddr_storage); - getsockname(priv->handle, reinterpret_cast(&sa), &size); - local_addr = SockAddr::create(sa); + SockAddr::SysAddr sa; + getsockname(priv->handle, reinterpret_cast(&sa.addr), &sa.size); + local_addr = SockAddr::from_sys(sa); #ifdef WIN32 *priv->event = CreateEvent(0, false, false, 0); @@ -113,10 +113,9 @@ const IO::Handle &Socket::get_event_handle() void Socket::bind(const SockAddr &addr) { - sockaddr_storage sa; - unsigned size = addr.fill_sockaddr(sa); + SockAddr::SysAddr sa = addr.to_sys(); - int err = ::bind(priv->handle, reinterpret_cast(&sa), size); + int err = ::bind(priv->handle, reinterpret_cast(&sa.addr), sa.size); if(err==-1) throw system_error("bind");