diff options
| -rw-r--r-- | libglusterfs/src/common-utils.h | 3 | ||||
| -rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 4 | 
2 files changed, 5 insertions, 2 deletions
diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index 05e4d5b348d..500d34237f0 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -27,6 +27,7 @@  #ifndef GF_BSD_HOST_OS  #include <alloca.h>  #endif +#include <limits.h>  void trap (void); @@ -258,6 +259,8 @@ union gf_sock_union {  #define GF_HIDDEN_PATH ".glusterfs" +#define IOV_MIN(n) min(IOV_MAX,n) +  static inline void  iov_free (struct iovec *vector, int count)  { diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index 93da3f29690..f9df4ac1d1e 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -327,7 +327,7 @@ __socket_ssl_readv (rpc_transport_t *this, struct iovec *opvector, int opcount)  	if (priv->use_ssl) {  		ret = ssl_read_one (this, opvector->iov_base, opvector->iov_len);  	} else { -		ret = readv (sock, opvector, opcount); +		ret = readv (sock, opvector, IOV_MIN(opcount));  	}  	return ret; @@ -477,7 +477,7 @@ __socket_rwv (rpc_transport_t *this, struct iovec *vector, int count,  					opvector->iov_base, opvector->iov_len);  			}  			else { -				ret = writev (sock, opvector, opcount); +				ret = writev (sock, opvector, IOV_MIN(opcount));  			}                          if (ret == 0 || (ret == -1 && errno == EAGAIN)) {  | 
