summaryrefslogtreecommitdiff
path: root/devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c
diff options
context:
space:
mode:
authorMaxim Sobolev <sobomax@FreeBSD.org>2001-10-29 17:05:04 +0000
committerMaxim Sobolev <sobomax@FreeBSD.org>2001-10-29 17:05:04 +0000
commit441ede378ebc0aac7cc46e1b9432f2e688bee17d (patch)
tree10cf44e262ee8321a0e68823fd017eff3c92e6bd /devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c
parentUpdate 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.c38
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);
+