]> git.tdb.fi Git - libs/net.git/blobdiff - source/streamlistensocket.cpp
Add function to check if handshake is done
[libs/net.git] / source / streamlistensocket.cpp
index df80b001f30e1eef9941d4ca70af353145c657b7..12e98b1f6a2d3b9d40fca5f689f74e2af07a7630 100644 (file)
@@ -1,11 +1,11 @@
 /* $Id$
 
 This file is part of libmspnet
-Copyright © 2008  Mikkosoft Productions, Mikko Rasa
+Copyright © 2008, 2011  Mikkosoft Productions, Mikko Rasa
 Distributed under the LGPL
 */
 
-#include <errno.h>
+#include <cerrno>
 #include <msp/core/refptr.h>
 #include <msp/strings/formatter.h>
 #include "streamlistensocket.h"
@@ -30,7 +30,7 @@ void StreamListenSocket::listen(const SockAddr &addr, unsigned backlog)
 
        int err=::listen(handle, backlog);
        if(err==-1)
-               throw Exception(format("Unable to listen: %s", strerror(errno)));
+               throw SystemError("Unable to listen", errno);
 
 #ifdef WIN32
        WSAEventSelect(handle, event, FD_ACCEPT);
@@ -45,9 +45,9 @@ StreamSocket *StreamListenSocket::accept()
        if(!listening)
                throw InvalidState("Socket is not listening");
 
-       sockaddr sa;
-       socklen_t size=sizeof(sockaddr);
-       SocketHandle new_h=::accept(handle, &sa, &size);
+       sockaddr_storage sa;
+       socklen_t size=sizeof(sockaddr_storage);
+       SocketHandle new_h=::accept(handle, reinterpret_cast<sockaddr *>(&sa), &size);
 
        RefPtr<SockAddr> paddr=SockAddr::create(sa);
        return new StreamSocket(new_h, *paddr);