| 3796 | } |
| 3797 | |
| 3798 | static void initNetworkingThread(int iel, int fReusePort) |
| 3799 | { |
| 3800 | /* Open the TCP listening socket for the user commands. */ |
| 3801 | if (fReusePort || (iel == IDX_EVENT_LOOP_MAIN)) |
| 3802 | { |
| 3803 | if (g_pserver->port != 0 && |
| 3804 | listenToPort(g_pserver->port,&g_pserver->rgthreadvar[iel].ipfd, fReusePort, (iel == IDX_EVENT_LOOP_MAIN)) == C_ERR) { |
| 3805 | serverLog(LL_WARNING, "Failed listening on port %u (TCP), aborting.", g_pserver->port); |
| 3806 | exit(1); |
| 3807 | } |
| 3808 | if (g_pserver->tls_port != 0 && |
| 3809 | listenToPort(g_pserver->tls_port,&g_pserver->rgthreadvar[iel].tlsfd, fReusePort, (iel == IDX_EVENT_LOOP_MAIN)) == C_ERR) { |
| 3810 | serverLog(LL_WARNING, "Failed listening on port %u (TLS), aborting.", g_pserver->port); |
| 3811 | exit(1); |
| 3812 | } |
| 3813 | } |
| 3814 | else |
| 3815 | { |
| 3816 | // We use the main threads file descriptors |
| 3817 | memcpy(&g_pserver->rgthreadvar[iel].ipfd, &g_pserver->rgthreadvar[IDX_EVENT_LOOP_MAIN].ipfd, sizeof(socketFds)); |
| 3818 | g_pserver->rgthreadvar[iel].ipfd.count = g_pserver->rgthreadvar[IDX_EVENT_LOOP_MAIN].ipfd.count; |
| 3819 | } |
| 3820 | |
| 3821 | /* Create an event handler for accepting new connections in TCP */ |
| 3822 | for (int j = 0; j < g_pserver->rgthreadvar[iel].ipfd.count; j++) { |
| 3823 | if (aeCreateFileEvent(g_pserver->rgthreadvar[iel].el, g_pserver->rgthreadvar[iel].ipfd.fd[j], AE_READABLE|AE_READ_THREADSAFE, |
| 3824 | acceptTcpHandler,NULL) == AE_ERR) |
| 3825 | { |
| 3826 | serverPanic( |
| 3827 | "Unrecoverable error creating g_pserver->ipfd file event."); |
| 3828 | } |
| 3829 | } |
| 3830 | |
| 3831 | makeThreadKillable(); |
| 3832 | |
| 3833 | for (int j = 0; j < g_pserver->rgthreadvar[iel].tlsfd.count; j++) { |
| 3834 | if (aeCreateFileEvent(g_pserver->rgthreadvar[iel].el, g_pserver->rgthreadvar[iel].tlsfd.fd[j], AE_READABLE|AE_READ_THREADSAFE, |
| 3835 | acceptTLSHandler,NULL) == AE_ERR) |
| 3836 | { |
| 3837 | serverPanic( |
| 3838 | "Unrecoverable error creating g_pserver->tlsfd file event."); |
| 3839 | } |
| 3840 | } |
| 3841 | } |
| 3842 | |
| 3843 | static void initNetworking(int fReusePort) |
| 3844 | { |
no test coverage detected