]> git.tdb.fi Git - libs/net.git/blobdiff - source/socket.cpp
Add IPv6 support
[libs/net.git] / source / socket.cpp
index 49614df0c807bdf89f3d5772b3afb996b1bf0039..150d8367948c7d0ed64a3c1547d2ae485ab089dc 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspnet
-Copyright © 2008  Mikkosoft Productions, Mikko Rasa
+Copyright © 2008, 2010-2011  Mikkosoft Productions, Mikko Rasa
 Distributed under the LGPL
 */
 
@@ -49,9 +49,9 @@ Socket::Socket(SocketHandle h, const SockAddr &paddr):
        local_addr(0),
        peer_addr(paddr.copy())
 {
-       sockaddr sa;
-       socklen_t size=sizeof(sockaddr);
-       getsockname(handle, &sa, &size);
+       sockaddr_storage sa;
+       socklen_t size=sizeof(sockaddr_storage);
+       getsockname(handle, reinterpret_cast<sockaddr *>(&sa), &size);
        local_addr=SockAddr::create(sa);
 
 #ifdef WIN32
@@ -105,10 +105,10 @@ void Socket::bind(const SockAddr &addr)
 {
        check_state(false);
 
-       sockaddr sa;
+       sockaddr_storage sa;
        unsigned size=addr.fill_sockaddr(sa);
 
-       int err=::bind(handle, &sa, size);
+       int err=::bind(handle, reinterpret_cast<sockaddr *>(&sa), size);
        if(err==-1)
                throw SystemError("Unable to bind", errno);