diff options
Diffstat (limited to 'src/socket_base.cpp')
| -rw-r--r-- | src/socket_base.cpp | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/src/socket_base.cpp b/src/socket_base.cpp index 10f1404..88ba43f 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -158,11 +158,18 @@ int zmq::socket_base_t::setsockopt (int option_, const void *optval_,          return 0;      case ZMQ_MCAST_LOOP: -        if (optvallen_ != sizeof (bool)) { +        if (optvallen_ != sizeof (int64_t)) { +            errno = EINVAL; +            return -1; +        } + +        if ((int64_t) *((int64_t*) optval_) == 0 || +              (int64_t) *((int64_t*) optval_) == 1) { +            options.use_multicast_loop = (bool) *((int64_t*) optval_); +        } else {              errno = EINVAL;              return -1;          } -        options.use_multicast_loop = optval_;          return 0;      default: | 
