Commit 311f4d00 authored by Constantin Rack's avatar Constantin Rack

Merge pull request #1472 from reunanen/allow-explicitly-setting-buf-sizes-to-0

Allow explicitly setting buf sizes to 0
parents 72a94881 7362f3af
...@@ -450,14 +450,12 @@ Applicable socket types:: all, when using multicast transports ...@@ -450,14 +450,12 @@ Applicable socket types:: all, when using multicast transports
ZMQ_RCVBUF: Retrieve kernel receive buffer size ZMQ_RCVBUF: Retrieve kernel receive buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_RCVBUF' option shall retrieve the underlying kernel receive buffer The 'ZMQ_RCVBUF' option shall retrieve the underlying kernel receive buffer
size for the specified 'socket'. A value of zero means that the OS default is size for the specified 'socket'. For details refer to your operating system
in effect. For details refer to your operating system documentation for the documentation for the 'SO_RCVBUF' socket option.
'SO_RCVBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0
Applicable socket types:: all Applicable socket types:: all
...@@ -566,14 +564,12 @@ Applicable socket types:: all, when using multicast transports ...@@ -566,14 +564,12 @@ Applicable socket types:: all, when using multicast transports
ZMQ_SNDBUF: Retrieve kernel transmit buffer size ZMQ_SNDBUF: Retrieve kernel transmit buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_SNDBUF' option shall retrieve the underlying kernel transmit buffer The 'ZMQ_SNDBUF' option shall retrieve the underlying kernel transmit buffer
size for the specified 'socket'. A value of zero means that the OS default is size for the specified 'socket'. For details refer to your operating system
in effect. For details refer to your operating system documentation for the documentation for the 'SO_SNDBUF' socket option.
'SO_SNDBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0
Applicable socket types:: all Applicable socket types:: all
......
...@@ -469,14 +469,14 @@ Applicable socket types:: all, when using multicast transports ...@@ -469,14 +469,14 @@ Applicable socket types:: all, when using multicast transports
ZMQ_RCVBUF: Set kernel receive buffer size ZMQ_RCVBUF: Set kernel receive buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_RCVBUF' option shall set the underlying kernel receive buffer size for The 'ZMQ_RCVBUF' option shall set the underlying kernel receive buffer size for
the 'socket' to the specified size in bytes. A value of zero means leave the the 'socket' to the specified size in bytes. A value of -1 means leave the
OS default unchanged. For details refer to your operating system documentation OS default unchanged. For details refer to your operating system documentation
for the 'SO_RCVBUF' socket option. for the 'SO_RCVBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0 Default value:: -1
Applicable socket types:: all Applicable socket types:: all
...@@ -660,14 +660,14 @@ Applicable socket types:: ZMQ_ROUTER ...@@ -660,14 +660,14 @@ Applicable socket types:: ZMQ_ROUTER
ZMQ_SNDBUF: Set kernel transmit buffer size ZMQ_SNDBUF: Set kernel transmit buffer size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_SNDBUF' option shall set the underlying kernel transmit buffer size The 'ZMQ_SNDBUF' option shall set the underlying kernel transmit buffer size
for the 'socket' to the specified size in bytes. A value of zero means leave for the 'socket' to the specified size in bytes. A value of -1 means leave
the OS default unchanged. For details please refer to your operating system the OS default unchanged. For details please refer to your operating system
documentation for the 'SO_SNDBUF' socket option. documentation for the 'SO_SNDBUF' socket option.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
Option value unit:: bytes Option value unit:: bytes
Default value:: 0 Default value:: -1
Applicable socket types:: all Applicable socket types:: all
......
...@@ -41,8 +41,8 @@ zmq::options_t::options_t () : ...@@ -41,8 +41,8 @@ zmq::options_t::options_t () :
rate (100), rate (100),
recovery_ivl (10000), recovery_ivl (10000),
multicast_hops (1), multicast_hops (1),
sndbuf (0), sndbuf (-1),
rcvbuf (0), rcvbuf (-1),
tos (0), tos (0),
type (-1), type (-1),
linger (-1), linger (-1),
......
...@@ -196,14 +196,14 @@ int zmq::pgm_socket_t::init (bool udp_encapsulation_, const char *network_) ...@@ -196,14 +196,14 @@ int zmq::pgm_socket_t::init (bool udp_encapsulation_, const char *network_)
{ {
const int rcvbuf = (int) options.rcvbuf; const int rcvbuf = (int) options.rcvbuf;
if (rcvbuf) { if (rcvbuf >= 0) {
if (!pgm_setsockopt (sock, SOL_SOCKET, SO_RCVBUF, &rcvbuf, if (!pgm_setsockopt (sock, SOL_SOCKET, SO_RCVBUF, &rcvbuf,
sizeof (rcvbuf))) sizeof (rcvbuf)))
goto err_abort; goto err_abort;
} }
const int sndbuf = (int) options.sndbuf; const int sndbuf = (int) options.sndbuf;
if (sndbuf) { if (sndbuf >= 0) {
if (!pgm_setsockopt (sock, SOL_SOCKET, SO_SNDBUF, &sndbuf, if (!pgm_setsockopt (sock, SOL_SOCKET, SO_SNDBUF, &sndbuf,
sizeof (sndbuf))) sizeof (sndbuf)))
goto err_abort; goto err_abort;
......
...@@ -340,9 +340,9 @@ int zmq::socks_connecter_t::connect_to_proxy () ...@@ -340,9 +340,9 @@ int zmq::socks_connecter_t::connect_to_proxy ()
unblock_socket (s); unblock_socket (s);
// Set the socket buffer limits for the underlying socket. // Set the socket buffer limits for the underlying socket.
if (options.sndbuf != 0) if (options.sndbuf >= 0)
set_tcp_send_buffer (s, options.sndbuf); set_tcp_send_buffer (s, options.sndbuf);
if (options.rcvbuf != 0) if (options.rcvbuf >= 0)
set_tcp_receive_buffer (s, options.rcvbuf); set_tcp_receive_buffer (s, options.rcvbuf);
// Set the IP Type-Of-Service for the underlying socket // Set the IP Type-Of-Service for the underlying socket
......
...@@ -258,9 +258,9 @@ int zmq::tcp_connecter_t::open () ...@@ -258,9 +258,9 @@ int zmq::tcp_connecter_t::open ()
unblock_socket (s); unblock_socket (s);
// Set the socket buffer limits for the underlying socket. // Set the socket buffer limits for the underlying socket.
if (options.sndbuf != 0) if (options.sndbuf >= 0)
set_tcp_send_buffer (s, options.sndbuf); set_tcp_send_buffer (s, options.sndbuf);
if (options.rcvbuf != 0) if (options.rcvbuf >= 0)
set_tcp_receive_buffer (s, options.rcvbuf); set_tcp_receive_buffer (s, options.rcvbuf);
// Set the IP Type-Of-Service for the underlying socket // Set the IP Type-Of-Service for the underlying socket
......
...@@ -207,9 +207,9 @@ int zmq::tcp_listener_t::set_address (const char *addr_) ...@@ -207,9 +207,9 @@ int zmq::tcp_listener_t::set_address (const char *addr_)
set_ip_type_of_service (s, options.tos); set_ip_type_of_service (s, options.tos);
// Set the socket buffer limits for the underlying socket. // Set the socket buffer limits for the underlying socket.
if (options.sndbuf != 0) if (options.sndbuf >= 0)
set_tcp_send_buffer (s, options.sndbuf); set_tcp_send_buffer (s, options.sndbuf);
if (options.rcvbuf != 0) if (options.rcvbuf >= 0)
set_tcp_receive_buffer (s, options.rcvbuf); set_tcp_receive_buffer (s, options.rcvbuf);
// Allow reusing of the address. // Allow reusing of the address.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment