X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fstreamserversocket.cpp;h=b91491dcdd542e034ef6c35e3e00379abe019f7c;hb=1c300cbe77a7084951a080020361fc45bd190253;hp=9900e5d93953576d0b6140bd0629222978adead7;hpb=88bbb4039aa274c7f41ebe3a18085b63427e5475;p=libs%2Fnet.git diff --git a/source/net/streamserversocket.cpp b/source/net/streamserversocket.cpp index 9900e5d..b91491d 100644 --- a/source/net/streamserversocket.cpp +++ b/source/net/streamserversocket.cpp @@ -14,12 +14,14 @@ namespace Msp { namespace Net { StreamServerSocket::StreamServerSocket(Family af, int proto): - ServerSocket(af, SOCK_STREAM, proto), - listening(false) + ServerSocket(af, SOCK_STREAM, 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 +40,7 @@ StreamSocket *StreamServerSocket::accept() SockAddr::SysAddr sa; Private new_p; - new_p.handle = ::accept(priv->handle, reinterpret_cast(&sa.addr), &sa.size); + new_p.handle = check_sys_error(::accept(priv->handle, reinterpret_cast(&sa.addr), &sa.size), "accept"); RefPtr paddr = SockAddr::new_from_sys(sa); return new StreamSocket(new_p, *paddr);