MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / initNetworkingThread

Function initNetworkingThread

src/server.cpp:3798–3841  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3796}
3797
3798static 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
3843static void initNetworking(int fReusePort)
3844{

Callers 2

initNetworkingFunction · 0.85
workerThreadMainFunction · 0.85

Calls 4

listenToPortFunction · 0.85
serverLogFunction · 0.85
aeCreateFileEventFunction · 0.85
makeThreadKillableFunction · 0.85

Tested by

no test coverage detected