From a40381640502439f751f42c4b23d4c6d396993e3 Mon Sep 17 00:00:00 2001 From: Ewg-c <88107289+Ewg-c@users.noreply.github.com> Date: Thu, 29 Jul 2021 17:29:23 -0700 Subject: [PATCH] Minor refactoring for rioConnRead and adding errno (#9280) minor refactoring for rioConnRead and adding errno --- src/replication.c | 6 +++--- src/rio.c | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/replication.c b/src/replication.c index 65e6d9b08..93639fbcd 100644 --- a/src/replication.c +++ b/src/replication.c @@ -1756,10 +1756,10 @@ void readSyncBulkPayload(connection *conn) { if (rdbLoadRio(&rdb,RDBFLAGS_REPLICATION,&rsi) != C_OK) { /* RDB loading failed. */ - stopLoading(0); serverLog(LL_WARNING, - "Failed trying to load the MASTER synchronization DB " - "from socket"); + "Failed trying to load the MASTER synchronization DB " + "from socket: %s", strerror(errno)); + stopLoading(0); cancelReplicationHandshake(1); rioFreeConn(&rdb, NULL); diff --git a/src/rio.c b/src/rio.c index 529f0aeb9..2234ec6e3 100644 --- a/src/rio.c +++ b/src/rio.c @@ -187,6 +187,14 @@ static size_t rioConnRead(rio *r, void *buf, size_t len) { r->io.conn.pos = 0; } + /* Make sure the caller didn't request to read past the limit. + * If they didn't we'll buffer till the limit, if they did, we'll + * return an error. */ + if (r->io.conn.read_limit != 0 && r->io.conn.read_limit < r->io.conn.read_so_far + len) { + errno = EOVERFLOW; + return 0; + } + /* If we don't already have all the data in the sds, read more */ while (len > sdslen(r->io.conn.buf) - r->io.conn.pos) { size_t buffered = sdslen(r->io.conn.buf) - r->io.conn.pos; @@ -198,15 +206,7 @@ static size_t rioConnRead(rio *r, void *buf, size_t len) { if (r->io.conn.read_limit != 0 && r->io.conn.read_so_far + buffered + toread > r->io.conn.read_limit) { - /* Make sure the caller didn't request to read past the limit. - * If they didn't we'll buffer till the limit, if they did, we'll - * return an error. */ - if (r->io.conn.read_limit >= r->io.conn.read_so_far + len) - toread = r->io.conn.read_limit - r->io.conn.read_so_far - buffered; - else { - errno = EOVERFLOW; - return 0; - } + toread = r->io.conn.read_limit - r->io.conn.read_so_far - buffered; } int retval = connRead(r->io.conn.conn, (char*)r->io.conn.buf + sdslen(r->io.conn.buf),