* ecore_con: improve error detection.
SVN revision: 49551
This commit is contained in:
parent
5a8135174a
commit
d76f881898
|
@ -978,6 +978,8 @@ _ecore_con_cb_tcp_connect(void *data, Ecore_Con_Info *net_info)
|
|||
static void
|
||||
_ecore_con_cb_udp_connect(void *data, Ecore_Con_Info *net_info)
|
||||
{
|
||||
char test[INET6_ADDRSTRLEN];
|
||||
char *tmp;
|
||||
Ecore_Con_Server *svr;
|
||||
int curstate = 0;
|
||||
int broadcast = 1;
|
||||
|
@ -1293,7 +1295,7 @@ _ecore_con_cl_udp_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
|
||||
errno = 0;
|
||||
num = read(svr->fd, buf, 65536);
|
||||
if (num > 0)
|
||||
if (num >= 0)
|
||||
{
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
|
@ -1318,6 +1320,15 @@ _ecore_con_cl_udp_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((errno == EIO) || (errno == EBADF) ||
|
||||
(errno == EPIPE) || (errno == EINVAL) ||
|
||||
(errno == ENOSPC) || (errno == ECONNREFUSED))
|
||||
{
|
||||
kill_server(svr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
|
||||
_ecore_con_server_flush(svr);
|
||||
|
@ -1350,7 +1361,7 @@ _ecore_con_svr_udp_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
num = recvfrom(svr->fd, buf, sizeof(buf), MSG_DONTWAIT, (struct sockaddr*) &client_addr, &client_addr_len);
|
||||
#endif
|
||||
|
||||
if (num > 0)
|
||||
if (num >= 0)
|
||||
{
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
|
@ -1414,9 +1425,12 @@ _ecore_con_svr_udp_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
}
|
||||
}
|
||||
}
|
||||
if ((errno == EIO) || (errno == EBADF) ||
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((errno == EIO) || (errno == EBADF) ||
|
||||
(errno == EPIPE) || (errno == EINVAL) ||
|
||||
(errno == ENOSPC) || (num == 0)/* is num == 0 right? */)
|
||||
(errno == ENOSPC) || (errno == ECONNREFUSED))
|
||||
{
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
|
@ -1476,7 +1490,7 @@ _ecore_con_svr_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
if (!(num = ecore_con_ssl_client_read(cl, buf, 65536)))
|
||||
lost_client = 0;
|
||||
|
||||
if (num < 1)
|
||||
if (num < 0)
|
||||
{
|
||||
if (inbuf && !cl->delete_me)
|
||||
{
|
||||
|
@ -1552,7 +1566,6 @@ _ecore_con_server_flush(Ecore_Con_Server *svr)
|
|||
count = write(svr->fd, svr->write_buf + svr->write_buf_offset, num);
|
||||
else
|
||||
count = ecore_con_ssl_server_write(svr, svr->write_buf + svr->write_buf_offset, num);
|
||||
|
||||
if (count < 0)
|
||||
{
|
||||
/* we lost our server! */
|
||||
|
@ -1583,10 +1596,10 @@ _ecore_con_client_flush(Ecore_Con_Client *cl)
|
|||
count = write(cl->fd, cl->buf + cl->buf_offset, num);
|
||||
else
|
||||
count = ecore_con_ssl_client_write(cl, cl->buf + cl->buf_offset, num);
|
||||
if (count < 1)
|
||||
if (count < 0)
|
||||
{
|
||||
if ((errno == EIO) || (errno == EBADF) || (errno == EPIPE) ||
|
||||
(errno == EINVAL) || (errno == ENOSPC))
|
||||
(errno == EINVAL) || (errno == ENOSPC) || (errno == ECONNREFUSED))
|
||||
{
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue