diff options
author | Ewg-c <88107289+Ewg-c@users.noreply.github.com> | 2021-07-29 17:29:23 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-29 17:29:23 -0700 |
commit | a40381640502439f751f42c4b23d4c6d396993e3 (patch) | |
tree | 5b1f5e52b45a27400127c2681cd3983f35dd6ada | |
parent | 8bf433dc86937a72cbcfa02743a093c2e3d91960 (diff) | |
download | redis-a40381640502439f751f42c4b23d4c6d396993e3.tar.gz |
Minor refactoring for rioConnRead and adding errno (#9280)
minor refactoring for rioConnRead and adding errno
-rw-r--r-- | src/replication.c | 6 | ||||
-rw-r--r-- | 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); @@ -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), |