diff --git a/ggatec/ggatec.c b/ggatec/ggatec.c index 7e1027e..5294c31 100644 --- a/ggatec/ggatec.c +++ b/ggatec/ggatec.c @@ -242,14 +242,14 @@ recv_thread(void *arg __unused) ggio.gctl_length = hdr.gh_length; ggio.gctl_error = hdr.gh_error; - if (ggio.gctl_length > buflen) { - g_gate_log(LOG_ERR, "Received too large data, %llu.", ggio.gctl_length); - reconnect = 1; - pthread_kill(sendtd, SIGUSR1); - break; - } - if (ggio.gctl_error == 0 && ggio.gctl_cmd == GGATE_CMD_READ) { + if (ggio.gctl_length > buflen) { + g_gate_log(LOG_ERR, "Received too large data, %llu.", ggio.gctl_length); + reconnect = 1; + pthread_kill(sendtd, SIGUSR1); + break; + } + data = g_gate_recv(recvfd, ggio.gctl_data, ggio.gctl_length, MSG_WAITALL); if (reconnect)