From 76d87f47c7075a04dfd759fc5bd102dfad005dcc Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 20 Feb 2017 10:18:41 +0100 Subject: [PATCH] Don't leak file descriptor on syncWithMaster(). Close #3804. --- src/replication.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/replication.c b/src/replication.c index df2e23f3..bde37bc4 100644 --- a/src/replication.c +++ b/src/replication.c @@ -1568,7 +1568,7 @@ int slaveTryPartialResynchronization(int fd, int read_reply) { * establish a connection with the master. */ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) { char tmpfile[256], *err = NULL; - int dfd, maxtries = 5; + int dfd = -1, maxtries = 5; int sockerr = 0, psync_result; socklen_t errlen = sizeof(sockerr); UNUSED(el); @@ -1832,6 +1832,7 @@ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) { error: aeDeleteFileEvent(server.el,fd,AE_READABLE|AE_WRITABLE); + if (dfd != -1) close(dfd); close(fd); server.repl_transfer_s = -1; server.repl_state = REPL_STATE_CONNECT;