[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r31658 - gnunet/src/mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r31658 - gnunet/src/mesh |
Date: |
Sat, 21 Dec 2013 22:44:04 +0100 |
Author: grothoff
Date: 2013-12-21 22:44:04 +0100 (Sat, 21 Dec 2013)
New Revision: 31658
Modified:
gnunet/src/mesh/gnunet-mesh.c
Log:
-handle partial writes and IO errors, even on stdout
Modified: gnunet/src/mesh/gnunet-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-mesh.c 2013-12-21 21:41:33 UTC (rev 31657)
+++ gnunet/src/mesh/gnunet-mesh.c 2013-12-21 21:44:04 UTC (rev 31658)
@@ -330,11 +330,27 @@
const struct GNUNET_MessageHeader *message)
{
uint16_t len;
+ ssize_t done;
+ uint16_t off;
+ const char *buf;
GNUNET_break (ch == channel);
len = ntohs (message->size) - sizeof (*message);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got %u bytes\n", len);
- write (1, (char *) &message[1], len);
+ buf = (const char *) &message[1];
+ off = 0;
+ while (off < len)
+ {
+ done = write (1, &buf[off], len - off);
+ if (done <= 0)
+ {
+ if (-1 == done)
+ GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
+ "write");
+ return GNUNET_SYSERR;
+ }
+ off += done;
+ }
return GNUNET_OK;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r31658 - gnunet/src/mesh,
gnunet <=