]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/streamserversocket.cpp
Don't allow duplicate listen calls
[libs/net.git] / source / net / streamserversocket.cpp
index 1823dbd488ccf9585e020a11ef94d8bb2f092606..9b583a141da552d420908826357528eb5b5b7cce 100644 (file)
@@ -20,6 +20,9 @@ StreamServerSocket::StreamServerSocket(Family af, int proto):
 
 void StreamServerSocket::listen(const SockAddr &addr, unsigned backlog)
 {
+       if(listening)
+               throw bad_socket_state("already listening");
+
        bind(addr);
 
        int err = ::listen(priv->handle, backlog);
@@ -38,7 +41,7 @@ StreamSocket *StreamServerSocket::accept()
 
        SockAddr::SysAddr sa;
        Private new_p;
-       new_p.handle = check_sys_error(::accept(priv->handle, reinterpret_cast<sockaddr *>(&sa.addr), &sa.size));
+       new_p.handle = check_sys_error(::accept(priv->handle, reinterpret_cast<sockaddr *>(&sa.addr), &sa.size), "accept");
 
        RefPtr<SockAddr> paddr = SockAddr::new_from_sys(sa);
        return new StreamSocket(new_p, *paddr);