Commit 7abb6ccb authored by Ian Barber's avatar Ian Barber

Merge pull request #442 from hintjens/master

Fixed build regression #449
parents 7f63fc65 06660632
MAN3 = zmq_bind.3 zmq_close.3 zmq_connect.3 zmq_proxy.3 \ MAN3 = zmq_bind.3 zmq_unbind.3 zmq_connect.3 zmq_disconnect.3 zmq_close.3 \
zmq_ctx_new.3 zmq_ctx_destroy.3 zmq_ctx_get.3 zmq_ctx_set.3 \ zmq_ctx_new.3 zmq_ctx_destroy.3 zmq_ctx_get.3 zmq_ctx_set.3 \
zmq_init.3 zmq_term.3 \ zmq_msg_init.3 zmq_msg_init_data.3 zmq_msg_init_size.3 \
zmq_msg_close.3 zmq_msg_copy.3 zmq_msg_data.3 zmq_msg_init.3 \ zmq_msg_move.3 zmq_msg_copy.3 zmq_msg_size.3 zmq_msg_data.3 zmq_msg_close.3 \
zmq_msg_init_data.3 zmq_msg_init_size.3 zmq_msg_move.3 zmq_msg_size.3 \
zmq_msg_send.3 zmq_msg_recv.3 \ zmq_msg_send.3 zmq_msg_recv.3 \
zmq_poll.3 zmq_recv.3 zmq_send.3 zmq_setsockopt.3 zmq_socket.3 \ zmq_send.3 zmq_recv.3 \
zmq_socket_monitor.3 zmq_strerror.3 zmq_version.3 zmq_getsockopt.3 zmq_errno.3 \ zmq_msg_get.3 zmq_msg_set.3 zmq_msg_more.3 \
zmq_sendmsg.3 zmq_recvmsg.3 zmq_msg_get.3 zmq_msg_set.3 zmq_msg_more.3 zmq_getsockopt.3 zmq_setsockopt.3 \
zmq_socket.3 zmq_socket_monitor.3 zmq_poll.3 \
zmq_errno.3 zmq_strerror.3 zmq_version.3 zmq_proxy.3 \
zmq_sendmsg.3 zmq_recvmsg.3 zmq_init.3 zmq_term.3
MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_epgm.7 zmq_inproc.7 zmq_ipc.7 MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_epgm.7 zmq_inproc.7 zmq_ipc.7
MAN_DOC = $(MAN1) $(MAN3) $(MAN7) MAN_DOC = $(MAN1) $(MAN3) $(MAN7)
......
...@@ -26,6 +26,8 @@ Specifies that the operation should be performed in non-blocking mode. If there ...@@ -26,6 +26,8 @@ Specifies that the operation should be performed in non-blocking mode. If there
are no messages available on the specified 'socket', the _zmq_recvmsg()_ are no messages available on the specified 'socket', the _zmq_recvmsg()_
function shall fail with 'errno' set to EAGAIN. function shall fail with 'errno' set to EAGAIN.
NOTE: this API method is deprecated in favor of zmq_msg_recv(3).
Multi-part messages Multi-part messages
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
......
...@@ -36,6 +36,7 @@ NOTE: A successful invocation of _zmq_sendmsg()_ does not indicate that the ...@@ -36,6 +36,7 @@ NOTE: A successful invocation of _zmq_sendmsg()_ does not indicate that the
message has been transmitted to the network, only that it has been queued on message has been transmitted to the network, only that it has been queued on
the 'socket' and 0MQ has assumed responsibility for the message. the 'socket' and 0MQ has assumed responsibility for the message.
NOTE: this API method is deprecated in favor of zmq_msg_send(3).
Multi-part messages Multi-part messages
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
......
...@@ -371,11 +371,8 @@ ZMQ_ROUTER_MANDATORY: accept only routable messages on ROUTER sockets ...@@ -371,11 +371,8 @@ ZMQ_ROUTER_MANDATORY: accept only routable messages on ROUTER sockets
Sets the 'ROUTER' socket behavior when an unroutable message is encountered. A Sets the 'ROUTER' socket behavior when an unroutable message is encountered. A
value of `0` is the default and discards the message silently when it cannot be value of `0` is the default and discards the message silently when it cannot be
routed. A value of `1` returns an 'EAGAIN' error code if the message cannot be routed. A value of `1` returns an 'EHOSTUNREACH' error code if the message
routed. cannot be routed.
Note: Setting this socket option may have unpredictable effects on reactor-type
libraries that assume EAGAIN will only be sent in HWM-type situations.
[horizontal] [horizontal]
Option value type:: int Option value type:: int
......
...@@ -261,6 +261,7 @@ ZMQ_EXPORT int zmq_msg_set (zmq_msg_t *msg, int option, int optval); ...@@ -261,6 +261,7 @@ ZMQ_EXPORT int zmq_msg_set (zmq_msg_t *msg, int option, int optval);
/* Deprecated aliases */ /* Deprecated aliases */
#define ZMQ_NOBLOCK ZMQ_DONTWAIT #define ZMQ_NOBLOCK ZMQ_DONTWAIT
#define ZMQ_FAIL_UNROUTABLE ZMQ_ROUTER_MANDATORY
#define ZMQ_ROUTER_BEHAVIOR ZMQ_ROUTER_MANDATORY #define ZMQ_ROUTER_BEHAVIOR ZMQ_ROUTER_MANDATORY
/******************************************************************************/ /******************************************************************************/
......
...@@ -19,13 +19,39 @@ ...@@ -19,13 +19,39 @@
*/ */
#include <stddef.h> #include <stddef.h>
#include "../include/zmq.h"
#include "platform.hpp" #include "platform.hpp"
#include "proxy.hpp" #include "proxy.hpp"
#include "socket_base.hpp" #include "socket_base.hpp"
#include "likely.hpp" #include "likely.hpp"
#include "err.hpp" #include "err.hpp"
#if defined ZMQ_FORCE_SELECT
#define ZMQ_POLL_BASED_ON_SELECT
#elif defined ZMQ_FORCE_POLL
#define ZMQ_POLL_BASED_ON_POLL
#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
defined ZMQ_HAVE_NETBSD
#define ZMQ_POLL_BASED_ON_POLL
#elif defined ZMQ_HAVE_WINDOWS || defined ZMQ_HAVE_OPENVMS ||\
defined ZMQ_HAVE_CYGWIN
#define ZMQ_POLL_BASED_ON_SELECT
#endif
// On AIX platform, poll.h has to be included first to get consistent
// definition of pollfd structure (AIX uses 'reqevents' and 'retnevents'
// instead of 'events' and 'revents' and defines macros to map from POSIX-y
// names to AIX-specific names).
#if defined ZMQ_POLL_BASED_ON_POLL
#include <poll.h>
#endif
// zmq.h must be included *after* poll.h for AIX to build properly
#include "../include/zmq.h"
int zmq::proxy ( int zmq::proxy (
class socket_base_t *frontend_, class socket_base_t *frontend_,
class socket_base_t *backend_, class socket_base_t *backend_,
......
...@@ -162,7 +162,7 @@ int zmq::router_t::xsend (msg_t *msg_, int flags_) ...@@ -162,7 +162,7 @@ int zmq::router_t::xsend (msg_t *msg_, int flags_)
else else
if (mandatory) { if (mandatory) {
more_out = false; more_out = false;
errno = EAGAIN; errno = EHOSTUNREACH;
return -1; return -1;
} }
} }
......
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