summaryrefslogtreecommitdiffstats
path: root/src/fuse/connection.c
diff options
context:
space:
mode:
authorSimon Rettberg2017-10-24 22:03:46 +0200
committerSimon Rettberg2017-10-24 22:03:46 +0200
commit58e8672218b607ea0c27a32eeadd1c5ac459c840 (patch)
tree444650a3a4755813191fd52ef791672a13572aaf /src/fuse/connection.c
parent[SERVER] Initialize PRNG (diff)
downloaddnbd3-58e8672218b607ea0c27a32eeadd1c5ac459c840.tar.gz
dnbd3-58e8672218b607ea0c27a32eeadd1c5ac459c840.tar.xz
dnbd3-58e8672218b607ea0c27a32eeadd1c5ac459c840.zip
[FUSE] Fix type mismatch warnings
Diffstat (limited to 'src/fuse/connection.c')
-rw-r--r--src/fuse/connection.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/fuse/connection.c b/src/fuse/connection.c
index a3007fd..29ac2de 100644
--- a/src/fuse/connection.c
+++ b/src/fuse/connection.c
@@ -234,17 +234,21 @@ void connection_close()
pthread_mutex_unlock( &connection.sendMutex );
}
-int connection_printStats(char *buffer, const int len)
+size_t connection_printStats(char *buffer, const size_t len)
{
int ret;
- int remaining = len;
+ size_t remaining = len;
if ( remaining > 0 ) {
ret = snprintf( buffer, remaining, "Image: %s\nRevision: %d\n\nCurrent connection time: %ds\n\n",
image.name, (int)image.rid, (int)( (nowMilli() - connection.startupTime) / 1000 ) );
- if ( ret > 0 ) {
- remaining -= ret;
- buffer += ret;
+ if ( ret < 0 ) {
+ ret = 0;
}
+ if ( (size_t)ret >= remaining ) {
+ return len;
+ }
+ remaining -= ret;
+ buffer += ret;
}
int i = -1;
pthread_spin_lock( &altLock );
@@ -256,12 +260,12 @@ int connection_printStats(char *buffer, const int len)
} else {
*buffer++ = ' ';
}
- ret = sock_printHost( &altservers[i].host, buffer, remaining );
- remaining -= (ret + 1); // For space or * above
- buffer += ret;
+ const size_t addrlen = sock_printHost( &altservers[i].host, buffer, remaining );
+ remaining -= (addrlen + 1); // For space or * above
+ buffer += addrlen;
if ( remaining < 3 )
break;
- int width = MAX( 35 - ret, 0 );
+ int width = addrlen >= 35 ? 0 : 35 - (int)addrlen;
char *unit;
int value;
if ( altservers[i].rtt > 5000 ) {
@@ -274,6 +278,13 @@ int connection_printStats(char *buffer, const int len)
}
ret = snprintf( buffer, remaining, "% *d %s Unreachable: % 4d BestCount: % 4d\n",
width, value, unit, altservers[i].consecutiveFails, altservers[i].bestCount );
+ if ( ret < 0 ) {
+ ret = 0;
+ }
+ if ( (size_t)ret >= remaining ) {
+ remaining = 0;
+ break;
+ }
remaining -= ret;
buffer += ret;
}