diff --git a/common/utils/T/tracer/enb.c b/common/utils/T/tracer/enb.c index eeaa0ff31fc00a553c9a870b75fc677307d7cf63..1d97b428d3e57aad8459b5eb8b6f648a16a3eb80 100644 --- a/common/utils/T/tracer/enb.c +++ b/common/utils/T/tracer/enb.c @@ -39,9 +39,10 @@ void is_on_changed(void *_d) if (d->socket == -1) goto no_connection; t = 1; - socket_send(d->socket, &t, 1); - socket_send(d->socket, &d->nevents, sizeof(int)); - socket_send(d->socket, d->is_on, d->nevents * sizeof(int)); + if (socket_send(d->socket, &t, 1) == -1 || + socket_send(d->socket, &d->nevents, sizeof(int)) == -1 || + socket_send(d->socket, d->is_on, d->nevents * sizeof(int)) == -1) + abort(); no_connection: if (pthread_mutex_unlock(&d->lock)) abort(); diff --git a/common/utils/T/tracer/textlog.c b/common/utils/T/tracer/textlog.c index f7bde62a43898ab5add5cbade75034ebf76e6797..362ff8103eaf95a4e20403c2bafcf72f2cfaf301 100644 --- a/common/utils/T/tracer/textlog.c +++ b/common/utils/T/tracer/textlog.c @@ -33,9 +33,10 @@ void is_on_changed(void *_d) if (d->socket == -1) goto no_connection; t = 1; - socket_send(d->socket, &t, 1); - socket_send(d->socket, &d->nevents, sizeof(int)); - socket_send(d->socket, d->is_on, d->nevents * sizeof(int)); + if (socket_send(d->socket, &t, 1) == -1 || + socket_send(d->socket, &d->nevents, sizeof(int)) == -1 || + socket_send(d->socket, d->is_on, d->nevents * sizeof(int)) == -1) + abort(); no_connection: if (pthread_mutex_unlock(&d->lock)) abort(); diff --git a/common/utils/T/tracer/utils.c b/common/utils/T/tracer/utils.c index cb2e123fce1a2100a7beb8bdc2a713acaa629f3e..f285a71fb115ec99a74815543adab49d9cd9c28e 100644 --- a/common/utils/T/tracer/utils.c +++ b/common/utils/T/tracer/utils.c @@ -68,16 +68,17 @@ list *list_append(list *l, void *data) /* socket */ /****************************************************************************/ -void socket_send(int socket, void *buffer, int size) +int socket_send(int socket, void *buffer, int size) { char *x = buffer; int ret; while (size) { ret = write(socket, x, size); - if (ret <= 0) abort(); + if (ret <= 0) return -1; size -= ret; x += ret; } + return 0; } int get_connection(char *addr, int port) diff --git a/common/utils/T/tracer/utils.h b/common/utils/T/tracer/utils.h index 00193b9eeb03fe74b68e7da1ced8bad0da554025..a5b1f1b9f663754bc478fe18b74d8205f0fe6f72 100644 --- a/common/utils/T/tracer/utils.h +++ b/common/utils/T/tracer/utils.h @@ -20,7 +20,8 @@ list *list_append(list *l, void *data); /* socket */ /****************************************************************************/ -void socket_send(int socket, void *buffer, int size); +/* socket_send: return 0 if okay, -1 on error */ +int socket_send(int socket, void *buffer, int size); int get_connection(char *addr, int port); int fullread(int fd, void *_buf, int count); int connect_to(char *addr, int port); diff --git a/common/utils/T/tracer/vcd.c b/common/utils/T/tracer/vcd.c index 46187f751bb0adb66e9720e032ba94189aa29cb1..d4972d15fc3c21afa3acdc0df4d533302231a0df 100644 --- a/common/utils/T/tracer/vcd.c +++ b/common/utils/T/tracer/vcd.c @@ -30,9 +30,10 @@ void is_on_changed(void *_d) if (d->socket == -1) goto no_connection; t = 1; - socket_send(d->socket, &t, 1); - socket_send(d->socket, &d->nevents, sizeof(int)); - socket_send(d->socket, d->is_on, d->nevents * sizeof(int)); + if (socket_send(d->socket, &t, 1) == -1 || + socket_send(d->socket, &d->nevents, sizeof(int)) == -1 || + socket_send(d->socket, d->is_on, d->nevents * sizeof(int)) == -1) + abort(); no_connection: if (pthread_mutex_unlock(&d->lock)) abort();