summaryrefslogtreecommitdiff
path: root/devel/ORBit/files/patch-src::IIOP::giop-msg-buffer.c
blob: a42320410527a7ae132c744b8857184cb5f23b5b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$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 @@
 	    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;
 
   sum = (GIOP_MESSAGE_BUFFER(send_buffer)->message_header.message_size + sizeof(GIOPMessageHeader));
   if(res < sum) {