diff --git a/src/xpdev/multisock.c b/src/xpdev/multisock.c index 17bd7458273353601f0dfa4a65a09952d80edc99..a74038cbc0360cfe47501ff0ff542c75d2ac9755 100644 --- a/src/xpdev/multisock.c +++ b/src/xpdev/multisock.c @@ -71,7 +71,7 @@ BOOL xpms_add(struct xpms_set *xpms_set, int domain, int type, } for(cur=res; cur; cur=cur->ai_next) { - new_socks=(struct xpms_sockdef *)realloc(xpms_set->socks, sizeof(struct xpms_set)*xpms_set->sock_count+1); + new_socks=(struct xpms_sockdef *)realloc(xpms_set->socks, sizeof(struct xpms_sockdef)*(xpms_set->sock_count+1)); if(new_socks==NULL) { /* This may be a partial failure */ if(xpms_set->lprintf) @@ -114,9 +114,9 @@ BOOL xpms_add(struct xpms_set *xpms_set, int domain, int type, bind_init(TRUE); } - if(!listen(xpms_set->socks[xpms_set->sock_count].sock, SOMAXCONN)) { + if(listen(xpms_set->socks[xpms_set->sock_count].sock, SOMAXCONN)==-1) { if(xpms_set->lprintf) - xpms_set->lprintf(LOG_WARNING, "%04d !ERROR %d listen()ing op port %d" + xpms_set->lprintf(LOG_WARNING, "%04d !ERROR %d listen()ing on port %d" , xpms_set->socks[xpms_set->sock_count].sock, ERROR_VALUE, port); closesocket(xpms_set->socks[xpms_set->sock_count].sock); FREE_AND_NULL(xpms_set->socks[xpms_set->sock_count].address); diff --git a/src/xpdev/multisock.h b/src/xpdev/multisock.h index c1980e97087ed4f37465a790eae18c0be9e9184a..ea73fa19e4dae01ee97cebdf97f0b7e5487d14fc 100644 --- a/src/xpdev/multisock.h +++ b/src/xpdev/multisock.h @@ -25,6 +25,10 @@ struct xpms_set { #define XPMS_FOREVER UINT_MAX +#ifdef __cplusplus +extern "C" { +#endif + struct xpms_set *xpms_create(unsigned int retries, unsigned int wait_secs, int (*lprintf)(int level, const char *fmt, ...)); void xpms_destroy(struct xpms_set *xpms_set); @@ -34,4 +38,8 @@ BOOL xpms_add(struct xpms_set *xpms_set, int domain, int type, SOCKET xpms_accept(struct xpms_set *, struct sockaddr * addr, socklen_t * addrlen, unsigned int timeout, void **cb_data); +#ifdef __cplusplus +} +#endif + #endif