forked from enlightenment/efl
parent
e90a7c7cbd
commit
498904e260
|
@ -1507,7 +1507,7 @@ _ecore_con_cb_tcp_listen(void *data,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (errno || memerr) ecore_con_event_server_error(svr, errno ? strerror(errno) : memerr);
|
if (errno || memerr) ecore_con_event_server_error(svr, memerr ?: strerror(errno));
|
||||||
ecore_con_ssl_server_shutdown(svr);
|
ecore_con_ssl_server_shutdown(svr);
|
||||||
_ecore_con_server_kill(svr);
|
_ecore_con_server_kill(svr);
|
||||||
}
|
}
|
||||||
|
@ -1586,7 +1586,7 @@ _ecore_con_cb_udp_listen(void *data,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (errno || memerr) ecore_con_event_server_error(svr, errno ? strerror(errno) : memerr);
|
if (errno || memerr) ecore_con_event_server_error(svr, memerr ?: strerror(errno));
|
||||||
ecore_con_ssl_server_shutdown(svr);
|
ecore_con_ssl_server_shutdown(svr);
|
||||||
_ecore_con_server_kill(svr);
|
_ecore_con_server_kill(svr);
|
||||||
}
|
}
|
||||||
|
@ -1677,7 +1677,7 @@ _ecore_con_cb_tcp_connect(void *data,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (errno || memerr) ecore_con_event_server_error(svr, errno ? strerror(errno) : memerr);
|
if (errno || memerr) ecore_con_event_server_error(svr, memerr ?: strerror(errno));
|
||||||
ecore_con_ssl_server_shutdown(svr);
|
ecore_con_ssl_server_shutdown(svr);
|
||||||
_ecore_con_server_kill(svr);
|
_ecore_con_server_kill(svr);
|
||||||
}
|
}
|
||||||
|
@ -1732,7 +1732,7 @@ _ecore_con_cb_udp_connect(void *data,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
if (errno || memerr) ecore_con_event_server_error(svr, errno ? strerror(errno) : memerr);
|
if (errno || memerr) ecore_con_event_server_error(svr, memerr ?: strerror(errno));
|
||||||
ecore_con_ssl_server_shutdown(svr);
|
ecore_con_ssl_server_shutdown(svr);
|
||||||
_ecore_con_server_kill(svr);
|
_ecore_con_server_kill(svr);
|
||||||
}
|
}
|
||||||
|
@ -1836,6 +1836,7 @@ _ecore_con_svr_tcp_handler(void *data,
|
||||||
Ecore_Con_Client *cl = NULL;
|
Ecore_Con_Client *cl = NULL;
|
||||||
unsigned char client_addr[256];
|
unsigned char client_addr[256];
|
||||||
unsigned int client_addr_len;
|
unsigned int client_addr_len;
|
||||||
|
const char *clerr = NULL;
|
||||||
|
|
||||||
svr = data;
|
svr = data;
|
||||||
if (svr->dead)
|
if (svr->dead)
|
||||||
|
@ -1861,34 +1862,19 @@ _ecore_con_svr_tcp_handler(void *data,
|
||||||
client_addr_len = sizeof(client_addr);
|
client_addr_len = sizeof(client_addr);
|
||||||
memset(&client_addr, 0, client_addr_len);
|
memset(&client_addr, 0, client_addr_len);
|
||||||
cl->fd = accept(svr->fd, (struct sockaddr *)&client_addr, (socklen_t *)&client_addr_len);
|
cl->fd = accept(svr->fd, (struct sockaddr *)&client_addr, (socklen_t *)&client_addr_len);
|
||||||
if (cl->fd < 0)
|
if (cl->fd < 0) goto error;
|
||||||
{
|
|
||||||
ecore_con_event_server_error(svr, strerror(errno));
|
|
||||||
goto free_cl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((svr->client_limit >= 0) && (svr->reject_excess_clients) &&
|
if ((svr->client_limit >= 0) && (svr->reject_excess_clients) &&
|
||||||
(svr->client_count >= (unsigned int)svr->client_limit))
|
(svr->client_count >= (unsigned int)svr->client_limit))
|
||||||
{
|
{
|
||||||
ecore_con_event_server_error(svr, "Maximum client limit reached");
|
clerr = "Maximum client limit reached";
|
||||||
goto close_fd;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fcntl(cl->fd, F_SETFL, O_NONBLOCK) < 0)
|
if (fcntl(cl->fd, F_SETFL, O_NONBLOCK) < 0) goto error;
|
||||||
{
|
if (fcntl(cl->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
|
||||||
ecore_con_event_server_error(svr, strerror(errno));
|
|
||||||
goto close_fd;
|
|
||||||
}
|
|
||||||
if (fcntl(cl->fd, F_SETFD, FD_CLOEXEC) < 0)
|
|
||||||
{
|
|
||||||
ecore_con_event_server_error(svr, strerror(errno));
|
|
||||||
goto close_fd;
|
|
||||||
}
|
|
||||||
cl->fd_handler = ecore_main_fd_handler_add(cl->fd, ECORE_FD_READ,
|
cl->fd_handler = ecore_main_fd_handler_add(cl->fd, ECORE_FD_READ,
|
||||||
_ecore_con_svr_cl_handler, cl, NULL, NULL);
|
_ecore_con_svr_cl_handler, cl, NULL, NULL);
|
||||||
if (!cl->fd_handler)
|
if (!cl->fd_handler) goto error;
|
||||||
goto close_fd;
|
|
||||||
|
|
||||||
ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
|
ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
|
||||||
|
|
||||||
if ((!svr->upgrade) && (svr->type & ECORE_CON_SSL))
|
if ((!svr->upgrade) && (svr->type & ECORE_CON_SSL))
|
||||||
|
@ -1896,14 +1882,14 @@ _ecore_con_svr_tcp_handler(void *data,
|
||||||
cl->handshaking = EINA_TRUE;
|
cl->handshaking = EINA_TRUE;
|
||||||
cl->ssl_state = ECORE_CON_SSL_STATE_INIT;
|
cl->ssl_state = ECORE_CON_SSL_STATE_INIT;
|
||||||
if (ecore_con_ssl_client_init(cl))
|
if (ecore_con_ssl_client_init(cl))
|
||||||
goto del_handler;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
cl->client_addr = malloc(client_addr_len);
|
cl->client_addr = malloc(client_addr_len);
|
||||||
if (!cl->client_addr)
|
if (!cl->client_addr)
|
||||||
{
|
{
|
||||||
ecore_con_event_server_error(svr, "Memory allocation failure when attempting to add a new client");
|
clerr = "Memory allocation failure when attempting to add a new client";
|
||||||
goto del_handler;
|
goto error;
|
||||||
}
|
}
|
||||||
cl->client_addr_len = client_addr_len;
|
cl->client_addr_len = client_addr_len;
|
||||||
memcpy(cl->client_addr, &client_addr, client_addr_len);
|
memcpy(cl->client_addr, &client_addr, client_addr_len);
|
||||||
|
@ -1916,13 +1902,11 @@ _ecore_con_svr_tcp_handler(void *data,
|
||||||
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
return ECORE_CALLBACK_RENEW;
|
||||||
|
|
||||||
del_handler:
|
error:
|
||||||
ecore_main_fd_handler_del(cl->fd_handler);
|
if (cl->fd_handler) ecore_main_fd_handler_del(cl->fd_handler);
|
||||||
close_fd:
|
if (cl->fd >= 0) close(cl->fd);
|
||||||
close(cl->fd);
|
|
||||||
free_cl:
|
|
||||||
free(cl);
|
free(cl);
|
||||||
|
if (clerr || errno) ecore_con_event_server_error(svr, clerr ?: strerror(errno));
|
||||||
return ECORE_CALLBACK_RENEW;
|
return ECORE_CALLBACK_RENEW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue