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;
errno = 0;
num = read(svr->fd, buf, 65536);
- if (num > 0)
+ if (num >= 0)
{
if (!svr->delete_me)
{
}
}
}
+ 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);
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)
{
}
}
}
- 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)
{
if (!(num = ecore_con_ssl_client_read(cl, buf, 65536)))
lost_client = 0;
- if (num < 1)
+ if (num < 0)
{
if (inbuf && !cl->delete_me)
{
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! */
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)
{