Fix crashes related to failed/rejected accepts.

This commit is contained in:
Yossi Gottlieb 2020-03-22 14:47:44 +02:00 committed by antirez
parent 50dcd9f96d
commit cdcab0e820

View File

@ -786,7 +786,7 @@ void clientAcceptHandler(connection *conn) {
serverLog(LL_WARNING, serverLog(LL_WARNING,
"Error accepting a client connection: %s", "Error accepting a client connection: %s",
connGetLastError(conn)); connGetLastError(conn));
freeClient(c); freeClientAsync(c);
return; return;
} }
@ -828,7 +828,7 @@ void clientAcceptHandler(connection *conn) {
/* Nothing to do, Just to avoid the warning... */ /* Nothing to do, Just to avoid the warning... */
} }
server.stat_rejected_conn++; server.stat_rejected_conn++;
freeClient(c); freeClientAsync(c);
return; return;
} }
} }
@ -887,9 +887,10 @@ static void acceptCommonHandler(connection *conn, int flags, char *ip) {
*/ */
if (connAccept(conn, clientAcceptHandler) == C_ERR) { if (connAccept(conn, clientAcceptHandler) == C_ERR) {
char conninfo[100]; char conninfo[100];
serverLog(LL_WARNING, if (connGetState(conn) == CONN_STATE_ERROR)
"Error accepting a client connection: %s (conn: %s)", serverLog(LL_WARNING,
connGetLastError(conn), connGetInfo(conn, conninfo, sizeof(conninfo))); "Error accepting a client connection: %s (conn: %s)",
connGetLastError(conn), connGetInfo(conn, conninfo, sizeof(conninfo)));
freeClient(connGetPrivateData(conn)); freeClient(connGetPrivateData(conn));
return; return;
} }