static int tc_msg_event_accept(tc_event_t *rev) { int fd; tc_event_t *ev; if ((fd = tc_socket_accept(rev->fd)) == TC_INVALID_SOCKET) { tc_log_info(LOG_ERR, 0, "msg accept failed, from listen:%d", rev->fd); return TC_ERROR; } if (tc_socket_set_nodelay(fd) == TC_ERROR) { tc_log_info(LOG_ERR, 0, "Set no delay to socket(%d) failed.", rev->fd); return TC_ERROR; } ev = tc_event_create(fd, tc_msg_event_process, NULL); if (ev == NULL) { tc_log_info(LOG_ERR, 0, "Msg event create failed."); return TC_ERROR; } if (tc_event_add(rev->loop, ev, TC_EVENT_READ) == TC_EVENT_ERROR) { return TC_ERROR; } return TC_OK; }
static int tc_msg_event_accept(tc_event_t *rev) { int fd; tc_event_t *ev; if ((fd = tc_socket_accept(rev->fd)) == TC_INVALID_SOCKET) { tc_log_info(LOG_ERR, 0, "msg accept failed, from listen:%d", rev->fd); return TC_ERROR; } if (tc_socket_set_nodelay(fd) == TC_ERROR) { tc_log_info(LOG_ERR, 0, "Set no delay to socket(%d) failed.", rev->fd); return TC_ERROR; } ev = tc_event_create(fd, tc_msg_event_process, NULL); if (ev == NULL) { tc_log_info(LOG_ERR, 0, "msg event create failed."); return TC_ERROR; } if (tc_event_add(rev->loop, ev, TC_EVENT_READ) == TC_EVENT_ERROR) { return TC_ERROR; } #if (TCPCOPY_SINGLE) if (srv_settings.router_fd > 0) { tc_log_info(LOG_WARN, 0, "it does not support distributed tcpcopy"); } srv_settings.router_fd = fd; #endif return TC_OK; }
static int tc_msg_event_accept(tc_event_t *rev) { tc_event_t *ev; register int fd; tunnel_basic_t *tunnel; if ((fd = tc_socket_accept(rev->fd)) == TC_INVALID_SOCK) { tc_log_info(LOG_ERR, 0, "msg accept failed, from listen:%d", rev->fd); return TC_ERR; } tc_log_info(LOG_NOTICE, 0, "it adds fd:%d", fd); if (tc_socket_set_nodelay(fd) == TC_ERR) { tc_log_info(LOG_ERR, 0, "Set no delay to socket(%d) failed.", rev->fd); tc_log_info(LOG_NOTICE, 0, "it close socket:%d", fd); tc_socket_close(fd); return TC_ERR; } #if (TC_SINGLE) if (!tc_intercept_check_tunnel_for_single(fd)) { tc_log_info(LOG_WARN, 0, "sth tries to connect to server."); tc_log_info(LOG_NOTICE, 0, "it close socket:%d", fd); tc_socket_close(fd); return TC_ERR; } #endif ev = tc_event_create(rev->loop->pool, fd, tc_msg_event_proc, NULL); if (ev == NULL) { tc_log_info(LOG_ERR, 0, "Msg event create failed."); return TC_ERR; } if (tc_event_add(rev->loop, ev, TC_EVENT_READ) == TC_EVENT_ERROR) { return TC_ERR; } tunnel = srv_settings.tunnel; tunnel[fd].ev = ev; tunnel[fd].first_in = 1; tunnel[fd].fd_valid = 1; return TC_OK; }