mirror of
http://github.com/valkey-io/valkey
synced 2024-11-22 00:52:38 +00:00
Minor refactoring for rioConnRead and adding errno (#9280)
minor refactoring for rioConnRead and adding errno
This commit is contained in:
parent
8bf433dc86
commit
a403816405
@ -1756,10 +1756,10 @@ void readSyncBulkPayload(connection *conn) {
|
|||||||
|
|
||||||
if (rdbLoadRio(&rdb,RDBFLAGS_REPLICATION,&rsi) != C_OK) {
|
if (rdbLoadRio(&rdb,RDBFLAGS_REPLICATION,&rsi) != C_OK) {
|
||||||
/* RDB loading failed. */
|
/* RDB loading failed. */
|
||||||
stopLoading(0);
|
|
||||||
serverLog(LL_WARNING,
|
serverLog(LL_WARNING,
|
||||||
"Failed trying to load the MASTER synchronization DB "
|
"Failed trying to load the MASTER synchronization DB "
|
||||||
"from socket");
|
"from socket: %s", strerror(errno));
|
||||||
|
stopLoading(0);
|
||||||
cancelReplicationHandshake(1);
|
cancelReplicationHandshake(1);
|
||||||
rioFreeConn(&rdb, NULL);
|
rioFreeConn(&rdb, NULL);
|
||||||
|
|
||||||
|
18
src/rio.c
18
src/rio.c
@ -187,6 +187,14 @@ static size_t rioConnRead(rio *r, void *buf, size_t len) {
|
|||||||
r->io.conn.pos = 0;
|
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 */
|
/* 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) {
|
while (len > sdslen(r->io.conn.buf) - r->io.conn.pos) {
|
||||||
size_t buffered = 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 &&
|
if (r->io.conn.read_limit != 0 &&
|
||||||
r->io.conn.read_so_far + buffered + toread > r->io.conn.read_limit)
|
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.
|
toread = r->io.conn.read_limit - r->io.conn.read_so_far - buffered;
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
int retval = connRead(r->io.conn.conn,
|
int retval = connRead(r->io.conn.conn,
|
||||||
(char*)r->io.conn.buf + sdslen(r->io.conn.buf),
|
(char*)r->io.conn.buf + sdslen(r->io.conn.buf),
|
||||||
|
Loading…
Reference in New Issue
Block a user