int nn_setsockopt (int s, int level, int option, const void *optval, size_t optvallen) { int rc; struct nn_sock *sock; rc = nn_global_hold_socket (&sock, s); if (nn_slow (rc < 0)) { errno = -rc; return -1; } if (nn_slow (!optval && optvallen)) { rc = -EFAULT; goto fail; } rc = nn_sock_setopt (sock, level, option, optval, optvallen); if (nn_slow (rc < 0)) goto fail; errnum_assert (rc == 0, -rc); nn_global_rele_socket (sock); return 0; fail: nn_global_rele_socket (sock); errno = -rc; return -1; }
int nn_setsockopt (int s, int level, int option, const void *optval, size_t optvallen) { int rc; NN_BASIC_CHECKS; if (nn_slow (!optval && optvallen)) { errno = EFAULT; return -1; } rc = nn_sock_setopt (self.socks [s], level, option, optval, optvallen); if (nn_slow (rc < 0)) { errno = -rc; return -1; } errnum_assert (rc == 0, -rc); return 0; }