Cleaned up router option code

- made consistent with options.cpp code
- added trace print for ongoing issue with Travis CI builds
This commit is contained in:
Pieter Hintjens 2013-05-21 15:15:16 +02:00
parent bf96cb44e2
commit 4112693051

View File

@ -68,27 +68,42 @@ void zmq::router_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_)
int zmq::router_t::xsetsockopt (int option_, const void *optval_, int zmq::router_t::xsetsockopt (int option_, const void *optval_,
size_t optvallen_) size_t optvallen_)
{ {
if (option_ != ZMQ_ROUTER_MANDATORY bool is_int = (optvallen_ == sizeof (int));
&& option_ != ZMQ_ROUTER_RAW) { int value = is_int? *((int *) optval_): 0;
errno = EINVAL;
return -1; switch (option_) {
case ZMQ_ROUTER_RAW:
if (is_int && value >= 0) {
raw_sock = value;
if (raw_sock) {
options.recv_identity = false;
options.raw_sock = true;
}
return 0;
}
// DEBUGGING PROBLEM WITH TRAVIS CI
printf ("E: invalid option value (int=%d value=%d)\n", is_int, value);
break;
case ZMQ_ROUTER_MANDATORY:
if (is_int && value >= 0) {
mandatory = value;
return 0;
}
// DEBUGGING PROBLEM WITH TRAVIS CI
printf ("E: invalid option value (int=%d value=%d)\n", is_int, value);
break;
default:
break;
} }
if (optvallen_ != sizeof (int) || *static_cast <const int*> (optval_) < 0) { // DEBUGGING PROBLEM WITH TRAVIS CI
errno = EINVAL; printf ("E: invalid option (option=%d)\n", option_);
return -1; errno = EINVAL;
} return -1;
if (option_ == ZMQ_ROUTER_RAW) {
raw_sock = (*static_cast <const int*> (optval_) != 0);
if (raw_sock) {
options.recv_identity = false;
options.raw_sock = true;
}
}
else
mandatory = (*static_cast <const int*> (optval_) != 0);
return 0;
} }
void zmq::router_t::xterminated (pipe_t *pipe_) void zmq::router_t::xterminated (pipe_t *pipe_)
{ {
std::set <pipe_t*>::iterator it = anonymous_pipes.find (pipe_); std::set <pipe_t*>::iterator it = anonymous_pipes.find (pipe_);