diff --git a/gate/mread.c b/gate/mread.c index 3db2f830..ab06575f 100644 --- a/gate/mread.c +++ b/gate/mread.c @@ -1,6 +1,5 @@ #include "mread.h" #include "ringbuffer.h" -#include "map.h" #include #include diff --git a/service_client.c b/service_client.c index fec975c7..cada035b 100644 --- a/service_client.c +++ b/service_client.c @@ -1,6 +1,7 @@ #include "skynet.h" #include +#include #include #include #include @@ -20,7 +21,17 @@ _cb(struct skynet_context * context, void * ud, int session, const char * addr, buffer[1].iov_base = (void *)msg; buffer[1].iov_len = sz; - writev(fd, buffer, 2); + for (;;) { + int err = writev(fd, buffer, 2); + if (err < 0) { + switch (errno) { + case EAGAIN: + case EINTR: + continue; + } + return; + } + } } int