Fix accept connection logic

This commit is contained in:
Quentin Dufour 2019-03-25 17:33:08 +01:00
parent 4f1c1b3c1b
commit f7c9b9bcd6
3 changed files with 6 additions and 3 deletions

View file

@ -19,6 +19,7 @@ int on_tcp_co(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
in_len = sizeof(addr); in_len = sizeof(addr);
conn_sock1 = accept(fdinfo->fd, (struct sockaddr*)&addr, &in_len); conn_sock1 = accept(fdinfo->fd, (struct sockaddr*)&addr, &in_len);
if (conn_sock1 == -1 && errno == EAGAIN) return 1;
if (conn_sock1 == -1) goto co_error; if (conn_sock1 == -1) goto co_error;
conn_sock2 = dup(conn_sock1); conn_sock2 = dup(conn_sock1);
if (conn_sock2 == -1) goto co_error; if (conn_sock2 == -1) goto co_error;
@ -36,7 +37,7 @@ int on_tcp_co(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
sprintf(to_fdinfo.url, "tcp:write:127.0.0.1:%s", port); sprintf(to_fdinfo.url, "tcp:write:127.0.0.1:%s", port);
evt_core_add_fd (ctx, &to_fdinfo); evt_core_add_fd (ctx, &to_fdinfo);
return 1; return 0;
co_error: co_error:
perror("Failed to handle new connection"); perror("Failed to handle new connection");

View file

@ -47,6 +47,7 @@ int rr_on_tcp_co(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
in_len = sizeof(addr); in_len = sizeof(addr);
conn_sock1 = accept(fdinfo->fd, (struct sockaddr*)&addr, &in_len); conn_sock1 = accept(fdinfo->fd, (struct sockaddr*)&addr, &in_len);
if (conn_sock1 == -1 && errno == EAGAIN) return 1;
if (conn_sock1 == -1) goto co_error; if (conn_sock1 == -1) goto co_error;
conn_sock2 = dup(conn_sock1); conn_sock2 = dup(conn_sock1);
if (conn_sock2 == -1) goto co_error; if (conn_sock2 == -1) goto co_error;
@ -64,7 +65,7 @@ int rr_on_tcp_co(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
sprintf(to_fdinfo.url, "tcp:write:127.0.0.1:%s", port); sprintf(to_fdinfo.url, "tcp:write:127.0.0.1:%s", port);
evt_core_add_fd (ctx, &to_fdinfo); evt_core_add_fd (ctx, &to_fdinfo);
return 1; return 0;
co_error: co_error:
perror("Failed to handle new connection"); perror("Failed to handle new connection");

View file

@ -37,6 +37,7 @@ int te_on_tcp_co(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
in_len = sizeof(addr); in_len = sizeof(addr);
conn_sock1 = accept(fdinfo->fd, (struct sockaddr*)&addr, &in_len); conn_sock1 = accept(fdinfo->fd, (struct sockaddr*)&addr, &in_len);
if (conn_sock1 == -1 && errno == EAGAIN) return 1;
if (conn_sock1 == -1) goto co_error; if (conn_sock1 == -1) goto co_error;
url_get_port(port, fdinfo->url); url_get_port(port, fdinfo->url);
@ -46,7 +47,7 @@ int te_on_tcp_co(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
sprintf(to_fdinfo.url, "tcp:all:127.0.0.1:%s", port); sprintf(to_fdinfo.url, "tcp:all:127.0.0.1:%s", port);
evt_core_add_fd (ctx, &to_fdinfo); evt_core_add_fd (ctx, &to_fdinfo);
return 1; return 0;
co_error: co_error:
perror("Failed to handle new connection"); perror("Failed to handle new connection");