mirror of
https://github.com/zeromq/libzmq.git
synced 2025-10-26 02:18:06 +01:00
Added gss produce/process routines.
For exchanging tokens.
This commit is contained in:
@@ -58,7 +58,7 @@ int zmq::gssapi_server_t::next_handshake_command (msg_t *msg_)
|
||||
state = waiting_for_initiate;
|
||||
break;
|
||||
case sending_token:
|
||||
rc = produce_token (msg_);
|
||||
rc = produce_token (msg_, 0, (char *) "kthx! bye!", 10);
|
||||
if (rc == 0)
|
||||
state = waiting_for_token; //state = expecting_another_token? waiting_for_token: waiting_for_ready;
|
||||
break;
|
||||
@@ -77,6 +77,10 @@ int zmq::gssapi_server_t::next_handshake_command (msg_t *msg_)
|
||||
int zmq::gssapi_server_t::process_handshake_command (msg_t *msg_)
|
||||
{
|
||||
int rc = 0;
|
||||
int flags = 0;
|
||||
gss_buffer_desc buf;
|
||||
buf.value = NULL;
|
||||
buf.length = 0;
|
||||
|
||||
switch (state) {
|
||||
case waiting_for_hello:
|
||||
@@ -90,7 +94,7 @@ int zmq::gssapi_server_t::process_handshake_command (msg_t *msg_)
|
||||
state = sending_token;
|
||||
break;
|
||||
case waiting_for_token:
|
||||
rc = process_token (msg_);
|
||||
rc = process_token (msg_, flags, &buf.value, buf.length);
|
||||
if (rc == 0)
|
||||
state = sending_ready; // state = expecting_another_token? sending_token: sending_ready;
|
||||
break;
|
||||
@@ -99,12 +103,18 @@ int zmq::gssapi_server_t::process_handshake_command (msg_t *msg_)
|
||||
rc = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (buf.value) {
|
||||
free (buf.value);
|
||||
}
|
||||
|
||||
if (rc == 0) {
|
||||
rc = msg_->close ();
|
||||
errno_assert (rc == 0);
|
||||
rc = msg_->init ();
|
||||
errno_assert (rc == 0);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user