diff options
| author | Maxim Sobolev <sobomax@FreeBSD.org> | 2001-10-29 17:05:04 +0000 |
|---|---|---|
| committer | Maxim Sobolev <sobomax@FreeBSD.org> | 2001-10-29 17:05:04 +0000 |
| commit | 441ede378ebc0aac7cc46e1b9432f2e688bee17d (patch) | |
| tree | 10cf44e262ee8321a0e68823fd017eff3c92e6bd /devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c | |
| parent | Update to version 1.337. (diff) | |
Huh, finally implement writev(2) wrapper that actually works. Boys, never ever
try to use writev(2) in a non-blocking mode, especially on sockets. Not only
this makes handling of EAGAIN rather weird, but in the case of sockets makes
your code subject of a ENOBUFS, which is absolutely unclear how to handle
properly. *sigh*
Bump PORTREVISION.
Diffstat (limited to '')
| -rw-r--r-- | devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c b/devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c index a42320410527..d6184df8952a 100644 --- a/devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c +++ b/devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c @@ -1,24 +1,34 @@ $FreeBSD$ ---- src/IIOP/giop-msg-buffer.c 2001/10/26 12:42:42 1.1 -+++ src/IIOP/giop-msg-buffer.c 2001/10/26 12:42:53 -@@ -197,7 +197,17 @@ +--- src/IIOP/giop-msg-buffer.c.orig Wed Oct 3 09:51:21 2001 ++++ src/IIOP/giop-msg-buffer.c Sat Oct 27 15:52:11 2001 +@@ -34,10 +34,6 @@ + #include "IIOP.h" + #include "IIOP-private.h" + +-#ifdef HAVE_LIMITED_WRITEV +-#define writev g_writev +-#endif +- + /* type defs */ + + #ifdef __GNUC__ +@@ -197,7 +193,7 @@ sum); } #endif - res = writev(fd, curvec, nvecs); -+ for(sum = 0, t = 0; t < nvecs; t++) { -+ do { -+ res = write(fd, curvec[t].iov_base, curvec[t].iov_len); -+ } while (res < 0 && errno == EAGAIN); -+ if (res < 0) { -+ break; -+ } else -+ sum += res; -+ } -+ if (res >= 0) -+ res = sum; ++ res = g_writev(fd, curvec, nvecs); sum = (GIOP_MESSAGE_BUFFER(send_buffer)->message_header.message_size + sizeof(GIOPMessageHeader)); if(res < sum) { +@@ -227,7 +223,7 @@ + + fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); + +- t = writev(fd, curvec, nvecs); ++ t = g_writev(fd, curvec, nvecs); + + fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK); + |
