X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=source%2Fstreamsocket.cpp;h=5794ecd82914b16c3c8d22c7edc28a56ffffcbf5;hp=c6cd214e18dc08dc1620cd190f27287dd8c6ce11;hb=dbfb303f336037cf7ca4fca3d8bfe504c624b501;hpb=bdd968802348fae7a7a407616cb3744e4877601a diff --git a/source/streamsocket.cpp b/source/streamsocket.cpp index c6cd214..5794ecd 100644 --- a/source/streamsocket.cpp +++ b/source/streamsocket.cpp @@ -6,6 +6,7 @@ #include #include #include +#include "sockaddr_private.h" #include "socket_private.h" #include "streamsocket.h" @@ -75,11 +76,10 @@ int StreamSocket::connect(const SockAddr &addr) if(connected) throw bad_socket_state("already connected"); - sockaddr_storage sa; - socklen_t size = addr.fill_sockaddr(sa); + SockAddr::SysAddr sa = addr.to_sys(); #ifdef WIN32 - int err = WSAConnect(priv->handle, reinterpret_cast(&sa), size, 0, 0, 0, 0); + int err = WSAConnect(priv->handle, reinterpret_cast(&sa.addr), sa.size, 0, 0, 0, 0); if(err==SOCKET_ERROR) { int err_code = WSAGetLastError(); @@ -93,7 +93,7 @@ int StreamSocket::connect(const SockAddr &addr) throw system_error("connect", err_code); } #else - int err = ::connect(priv->handle, reinterpret_cast(&sa), size); + int err = ::connect(priv->handle, reinterpret_cast(&sa.addr), sa.size); if(err==-1) { if(errno==EINPROGRESS) @@ -110,9 +110,9 @@ int StreamSocket::connect(const SockAddr &addr) peer_addr = addr.copy(); delete local_addr; - size = sizeof(sockaddr_storage); - getsockname(priv->handle, reinterpret_cast(&sa), &size); - local_addr = SockAddr::create(sa); + SockAddr::SysAddr lsa; + getsockname(priv->handle, reinterpret_cast(&lsa.addr), &lsa.size); + local_addr = SockAddr::from_sys(lsa); if(err==0) {