static inline void __set_sock_option(int fd, int cli)
{
int size;
-#ifdef __i386__
- struct timeval tv = { 5, 200 * 1000 }; /* 5.2 sec */
- _D("time out : 5.2 sec");
-#else
- struct timeval tv = { 1, 200 * 1000 }; /* 1.2 sec */
- _D("time out : 1.2 sec");
-#endif
+ struct timeval tv = { 3, 200 * 1000 }; /* 3.2 sec */
size = AUL_SOCK_MAXBUFF;
setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &size, sizeof(size));
memcpy(pkt->data, kb_data, datalen);
if ((len = send(fd, pkt, datalen + 8, 0)) != datalen + 8) {
- _E("sendto() failed - %d %d", len, datalen + 8);
+ _E("sendto() failed - %d %d (errno %d)", len, datalen + 8, errno);
if (errno == EPIPE) {
_E("pid:%d, fd:%d\n", pid, fd);
}
return NULL;
}
+retry_recv:
+ /* receive single packet from socket */
len = recv(fd, pkt, AUL_SOCK_MAXBUFF, 0);
if (len == -1) {
if (errno == EAGAIN) {
_E("recv timeout \n");
free(pkt);
return NULL;
+ } else if (errno == EINTR) {
+ goto retry_recv;
} else {
- _E("recv error\n");
+ _E("recv error %s\n", strerror(errno));
free(pkt);
return NULL;
}