int zmq::gssapi_client_t::next_handshake_command (msg_t *msg_) { if (state == send_ready) { int rc = produce_ready(msg_); if (rc == 0) state = connected; return rc; } if (state != call_next_init) { errno = EAGAIN; return -1; } if (initialize_context () < 0) return -1; if (produce_next_token (msg_) < 0) return -1; if (maj_stat != GSS_S_CONTINUE_NEEDED && maj_stat != GSS_S_COMPLETE) return -1; if (maj_stat == GSS_S_COMPLETE) { security_context_established = true; state = recv_ready; } else state = recv_next_token; return 0; }
int zmq::gssapi_server_t::next_handshake_command (msg_t *msg_) { if (state == send_ready) { int rc = produce_ready(msg_); if (rc == 0) state = recv_ready; return rc; } if (state != send_next_token) { errno = EAGAIN; return -1; } if (produce_next_token (msg_) < 0) return -1; if (maj_stat != GSS_S_CONTINUE_NEEDED && maj_stat != GSS_S_COMPLETE) return -1; if (maj_stat == GSS_S_COMPLETE) { security_context_established = true; } state = recv_next_token; return 0; }