X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=common.c;h=3addd0e3d0e6cec7f8656aec9cbbccb1f3f220cb;hb=93ab2b3dc7658be50317765792a8720c54b29807;hp=186ac43abf98d20c52149ac017e605fb86a12dff;hpb=4c619131857a40cf59a472fc55257bae4ded12d7;p=apps%2Fpfixtools.git diff --git a/common.c b/common.c index 186ac43..3addd0e 100644 --- a/common.c +++ b/common.c @@ -88,7 +88,7 @@ static int setnonblock(int sock) return 0; } -int tcp_listen_nonblock(const struct sockaddr *addr, socklen_t len) +int tcp_bind(const struct sockaddr *addr, socklen_t len) { int sock; @@ -128,17 +128,32 @@ int tcp_listen_nonblock(const struct sockaddr *addr, socklen_t len) return -1; } - if (setnonblock(sock)) { + return sock; +} + +int tcp_listen(const struct sockaddr *addr, socklen_t len) +{ + int sock = tcp_bind(addr, len); + if (listen(sock, 0) < 0) { + UNIXERR("bind"); close(sock); return -1; } + return sock; +} +int tcp_listen_nonblock(const struct sockaddr *addr, socklen_t len) +{ + int sock = tcp_bind(addr, len); + if (setnonblock(sock)) { + close(sock); + return -1; + } if (listen(sock, 0) < 0) { UNIXERR("bind"); close(sock); return -1; } - return sock; }