Commit 41fff55d authored by zhenwei pi's avatar zhenwei pi
Browse files

Use socketFds for unix



socketFds is also suitable for Unix socket, then we can use
'createSocketAcceptHandler' to create accept handler.
And then, we can abstract accept handler in the future.
Signed-off-by: default avatarzhenwei pi <pizhenwei@bytedance.com>
parent 1234e3a5
...@@ -1864,7 +1864,7 @@ void initServerConfig(void) { ...@@ -1864,7 +1864,7 @@ void initServerConfig(void) {
server.bindaddr[j] = zstrdup(default_bindaddr[j]); server.bindaddr[j] = zstrdup(default_bindaddr[j]);
server.ipfd.count = 0; server.ipfd.count = 0;
server.tlsfd.count = 0; server.tlsfd.count = 0;
server.sofd = -1; server.sofd.count = 0;
server.active_expire_enabled = 1; server.active_expire_enabled = 1;
server.skip_checksum_validation = 0; server.skip_checksum_validation = 0;
server.loading = 0; server.loading = 0;
...@@ -2487,18 +2487,19 @@ void initServer(void) { ...@@ -2487,18 +2487,19 @@ void initServer(void) {
/* Open the listening Unix domain socket. */ /* Open the listening Unix domain socket. */
if (server.unixsocket != NULL) { if (server.unixsocket != NULL) {
unlink(server.unixsocket); /* don't care if this fails */ unlink(server.unixsocket); /* don't care if this fails */
server.sofd = anetUnixServer(server.neterr,server.unixsocket, server.sofd.fd[0] = anetUnixServer(server.neterr,server.unixsocket,
(mode_t)server.unixsocketperm, server.tcp_backlog); (mode_t)server.unixsocketperm, server.tcp_backlog);
if (server.sofd == ANET_ERR) { if (server.sofd.fd[0] == ANET_ERR) {
serverLog(LL_WARNING, "Failed opening Unix socket: %s", server.neterr); serverLog(LL_WARNING, "Failed opening Unix socket: %s", server.neterr);
exit(1); exit(1);
} }
anetNonBlock(NULL,server.sofd); anetNonBlock(NULL,server.sofd.fd[0]);
anetCloexec(server.sofd); anetCloexec(server.sofd.fd[0]);
server.sofd.count = 1;
} }
/* Abort if there are no listening sockets at all. */ /* Abort if there are no listening sockets at all. */
if (server.ipfd.count == 0 && server.tlsfd.count == 0 && server.sofd < 0) { if (server.ipfd.count == 0 && server.tlsfd.count == 0 && server.sofd.count == 0) {
serverLog(LL_WARNING, "Configured to not listen anywhere, exiting."); serverLog(LL_WARNING, "Configured to not listen anywhere, exiting.");
exit(1); exit(1);
} }
...@@ -2591,8 +2592,9 @@ void initServer(void) { ...@@ -2591,8 +2592,9 @@ void initServer(void) {
if (createSocketAcceptHandler(&server.tlsfd, acceptTLSHandler) != C_OK) { if (createSocketAcceptHandler(&server.tlsfd, acceptTLSHandler) != C_OK) {
serverPanic("Unrecoverable error creating TLS socket accept handler."); serverPanic("Unrecoverable error creating TLS socket accept handler.");
} }
if (server.sofd > 0 && aeCreateFileEvent(server.el,server.sofd,AE_READABLE, if (createSocketAcceptHandler(&server.sofd, acceptUnixHandler) != C_OK) {
acceptUnixHandler,NULL) == AE_ERR) serverPanic("Unrecoverable error creating server.sofd file event."); serverPanic("Unrecoverable error creating server.sofd file event.");
}
/* Register a readable event for the pipe used to awake the event loop /* Register a readable event for the pipe used to awake the event loop
...@@ -4067,7 +4069,7 @@ void closeListeningSockets(int unlink_unix_socket) { ...@@ -4067,7 +4069,7 @@ void closeListeningSockets(int unlink_unix_socket) {
for (j = 0; j < server.ipfd.count; j++) close(server.ipfd.fd[j]); for (j = 0; j < server.ipfd.count; j++) close(server.ipfd.fd[j]);
for (j = 0; j < server.tlsfd.count; j++) close(server.tlsfd.fd[j]); for (j = 0; j < server.tlsfd.count; j++) close(server.tlsfd.fd[j]);
if (server.sofd != -1) close(server.sofd); for (j = 0; j < server.sofd.count; j++) close(server.sofd.fd[j]);
if (server.cluster_enabled) if (server.cluster_enabled)
for (j = 0; j < server.cfd.count; j++) close(server.cfd.fd[j]); for (j = 0; j < server.cfd.count; j++) close(server.cfd.fd[j]);
if (unlink_unix_socket && server.unixsocket) { if (unlink_unix_socket && server.unixsocket) {
...@@ -7135,7 +7137,7 @@ int main(int argc, char **argv) { ...@@ -7135,7 +7137,7 @@ int main(int argc, char **argv) {
} }
if (server.ipfd.count > 0 || server.tlsfd.count > 0) if (server.ipfd.count > 0 || server.tlsfd.count > 0)
serverLog(LL_NOTICE,"Ready to accept connections"); serverLog(LL_NOTICE,"Ready to accept connections");
if (server.sofd > 0) if (server.sofd.count > 0)
serverLog(LL_NOTICE,"The server is now ready to accept connections at %s", server.unixsocket); serverLog(LL_NOTICE,"The server is now ready to accept connections at %s", server.unixsocket);
if (server.supervised_mode == SUPERVISED_SYSTEMD) { if (server.supervised_mode == SUPERVISED_SYSTEMD) {
if (!server.masterhost) { if (!server.masterhost) {
......
...@@ -1516,7 +1516,7 @@ struct redisServer { ...@@ -1516,7 +1516,7 @@ struct redisServer {
unsigned int unixsocketperm; /* UNIX socket permission (see mode_t) */ unsigned int unixsocketperm; /* UNIX socket permission (see mode_t) */
socketFds ipfd; /* TCP socket file descriptors */ socketFds ipfd; /* TCP socket file descriptors */
socketFds tlsfd; /* TLS socket file descriptors */ socketFds tlsfd; /* TLS socket file descriptors */
int sofd; /* Unix socket file descriptor */ socketFds sofd; /* Unix socket file descriptor */
uint32_t socket_mark_id; /* ID for listen socket marking */ uint32_t socket_mark_id; /* ID for listen socket marking */
socketFds cfd; /* Cluster bus listening socket */ socketFds cfd; /* Cluster bus listening socket */
list *clients; /* List of active clients */ list *clients; /* List of active clients */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment