| 3145 | } |
| 3146 | |
| 3147 | void initServer(void) { |
| 3148 | int j; |
| 3149 | |
| 3150 | signal(SIGHUP, SIG_IGN); |
| 3151 | signal(SIGPIPE, SIG_IGN); |
| 3152 | setupSignalHandlers(); |
| 3153 | makeThreadKillable(); |
| 3154 | |
| 3155 | if (server.syslog_enabled) { |
| 3156 | openlog(server.syslog_ident, LOG_PID | LOG_NDELAY | LOG_NOWAIT, |
| 3157 | server.syslog_facility); |
| 3158 | } |
| 3159 | |
| 3160 | /* Initialization after setting defaults from the config system. */ |
| 3161 | server.aof_state = server.aof_enabled ? AOF_ON : AOF_OFF; |
| 3162 | server.hz = server.config_hz; |
| 3163 | server.pid = getpid(); |
| 3164 | server.in_fork_child = CHILD_TYPE_NONE; |
| 3165 | server.main_thread_id = pthread_self(); |
| 3166 | server.current_client = NULL; |
| 3167 | server.errors = raxNew(); |
| 3168 | server.fixed_time_expire = 0; |
| 3169 | server.clients = listCreate(); |
| 3170 | server.clients_index = raxNew(); |
| 3171 | server.clients_to_close = listCreate(); |
| 3172 | server.slaves = listCreate(); |
| 3173 | server.monitors = listCreate(); |
| 3174 | server.clients_pending_write = listCreate(); |
| 3175 | server.clients_pending_read = listCreate(); |
| 3176 | server.clients_timeout_table = raxNew(); |
| 3177 | server.replication_allowed = 1; |
| 3178 | server.slaveseldb = -1; /* Force to emit the first SELECT command. */ |
| 3179 | server.unblocked_clients = listCreate(); |
| 3180 | server.ready_keys = listCreate(); |
| 3181 | server.clients_waiting_acks = listCreate(); |
| 3182 | server.get_ack_from_slaves = 0; |
| 3183 | server.client_pause_type = 0; |
| 3184 | server.paused_clients = listCreate(); |
| 3185 | server.events_processed_while_blocked = 0; |
| 3186 | server.system_memory_size = zmalloc_get_memory_size(); |
| 3187 | server.blocked_last_cron = 0; |
| 3188 | server.blocking_op_nesting = 0; |
| 3189 | |
| 3190 | if ((server.tls_port || server.tls_replication || server.tls_cluster) |
| 3191 | && tlsConfigure(&server.tls_ctx_config) == C_ERR) { |
| 3192 | serverLog(LL_WARNING, "Failed to configure TLS. Check logs for more info."); |
| 3193 | exit(1); |
| 3194 | } |
| 3195 | |
| 3196 | createSharedObjects(); |
| 3197 | adjustOpenFilesLimit(); |
| 3198 | const char *clk_msg = monotonicInit(); |
| 3199 | serverLog(LL_NOTICE, "monotonic clock: %s", clk_msg); |
| 3200 | server.el = aeCreateEventLoop(server.maxclients+CONFIG_FDSET_INCR); |
| 3201 | if (server.el == NULL) { |
| 3202 | serverLog(LL_WARNING, |
| 3203 | "Failed creating the event loop. Error message: '%s'", |
| 3204 | strerror(errno)); |
no test coverage detected