| 3841 | } |
| 3842 | |
| 3843 | static void initNetworking(int fReusePort) |
| 3844 | { |
| 3845 | // We only initialize the main thread here, since RDB load is a special case that processes |
| 3846 | // clients before our server threads are launched. |
| 3847 | initNetworkingThread(IDX_EVENT_LOOP_MAIN, fReusePort); |
| 3848 | |
| 3849 | /* Open the listening Unix domain socket. */ |
| 3850 | if (g_pserver->unixsocket != NULL) { |
| 3851 | unlink(g_pserver->unixsocket); /* don't care if this fails */ |
| 3852 | g_pserver->sofd = anetUnixServer(serverTL->neterr,g_pserver->unixsocket, |
| 3853 | g_pserver->unixsocketperm, g_pserver->tcp_backlog); |
| 3854 | if (g_pserver->sofd == ANET_ERR) { |
| 3855 | serverLog(LL_WARNING, "Opening Unix socket: %s", serverTL->neterr); |
| 3856 | exit(1); |
| 3857 | } |
| 3858 | anetNonBlock(NULL,g_pserver->sofd); |
| 3859 | } |
| 3860 | |
| 3861 | /* Abort if there are no listening sockets at all. */ |
| 3862 | if (g_pserver->rgthreadvar[IDX_EVENT_LOOP_MAIN].ipfd.count == 0 && g_pserver->rgthreadvar[IDX_EVENT_LOOP_MAIN].tlsfd.count == 0 && g_pserver->sofd < 0) { |
| 3863 | serverLog(LL_WARNING, "Configured to not listen anywhere, exiting."); |
| 3864 | exit(1); |
| 3865 | } |
| 3866 | |
| 3867 | if (g_pserver->sofd > 0 && aeCreateFileEvent(g_pserver->rgthreadvar[IDX_EVENT_LOOP_MAIN].el,g_pserver->sofd,AE_READABLE|AE_READ_THREADSAFE, |
| 3868 | acceptUnixHandler,NULL) == AE_ERR) serverPanic("Unrecoverable error creating g_pserver->sofd file event."); |
| 3869 | } |
| 3870 | |
| 3871 | static void initServerThread(struct redisServerThreadVars *pvar, int fMain) |
| 3872 | { |
no test coverage detected