X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fensc_wrappers%2Fwrappers-iosock.hc;h=ee9f021049dbdda007328339fdebe29ad3a358a9;hb=b200c0071dac48ca1576123c8fd3d72052425127;hp=0da40c962e845ef932e1d3b10997cddcf2c45f49;hpb=c66b2f97361761b8a87058dc7a49ab59d4520556;p=util-vserver.git diff --git a/util-vserver/ensc_wrappers/wrappers-iosock.hc b/util-vserver/ensc_wrappers/wrappers-iosock.hc index 0da40c9..ee9f021 100644 --- a/util-vserver/ensc_wrappers/wrappers-iosock.hc +++ b/util-vserver/ensc_wrappers/wrappers-iosock.hc @@ -22,15 +22,16 @@ #include -inline static UNUSED bool -WsendAll(int fd, void const *ptr_v, size_t len) +inline static WRAPPER_DECL bool +WsendAll(int fd, void const *ptr_v, size_t len, int *err) { register char const *ptr = ptr_v; + if (err) *err = 0; while (len>0) { - size_t res = TEMP_FAILURE_RETRY(send(fd, ptr, len, MSG_NOSIGNAL)); - if (res==(size_t)-1) { - perror("send()"); + ssize_t res = TEMP_FAILURE_RETRY(send(fd, ptr, len, MSG_NOSIGNAL)); + if (res==-1) { + if (err) *err = errno; return false; } @@ -42,14 +43,14 @@ WsendAll(int fd, void const *ptr_v, size_t len) return true; } -inline static UNUSED void +inline static WRAPPER_DECL void EsendAll(int fd, void const *ptr_v, size_t len) { register char const *ptr = ptr_v; while (len>0) { - size_t res = TEMP_FAILURE_RETRY(send(fd, ptr, len, MSG_NOSIGNAL)); - FatalErrnoError(res==(size_t)-1, "send()"); + ssize_t res = TEMP_FAILURE_RETRY(send(fd, ptr, len, MSG_NOSIGNAL)); + FatalErrnoError(res==-1, "send()"); ptr += res; len -= res; @@ -57,15 +58,16 @@ EsendAll(int fd, void const *ptr_v, size_t len) } -inline static UNUSED bool -WrecvAll(int fd, void *ptr_v, size_t len) +inline static WRAPPER_DECL bool +WrecvAll(int fd, void *ptr_v, size_t len, int *err) { register char *ptr = ptr_v; + if (err) *err = 0; while (len>0) { - size_t res = TEMP_FAILURE_RETRY(recv(fd, ptr, len, MSG_NOSIGNAL)); - if (res==(size_t)-1) { - perror("recv()"); + ssize_t res = TEMP_FAILURE_RETRY(recv(fd, ptr, len, MSG_NOSIGNAL)); + if (res==-1) { + if (err) *err = errno; return false; } @@ -77,14 +79,14 @@ WrecvAll(int fd, void *ptr_v, size_t len) return true; } -inline static UNUSED bool +inline static WRAPPER_DECL bool ErecvAll(int fd, void *ptr_v, size_t len) { register char *ptr = ptr_v; while (len>0) { - size_t res = TEMP_FAILURE_RETRY(recv(fd, ptr, len, MSG_NOSIGNAL)); - FatalErrnoError(res==(size_t)-1, "recv()"); + ssize_t res = TEMP_FAILURE_RETRY(recv(fd, ptr, len, MSG_NOSIGNAL)); + FatalErrnoError(res==-1, "recv()"); if (res==0) return false;