mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-10 07:56:09 +00:00
Problem: test_security_gssapi fails to build
Solution: monitor new events only if DRAFT APIs are enabled, and convert to new event types. Same for DRAFT socket options.
This commit is contained in:
parent
330856daec
commit
5b1c0cd0ac
@ -59,6 +59,7 @@ static volatile int zap_deny_all = 0;
|
||||
// by reference, if not null, and event number by value. Returns -1
|
||||
// in case of error.
|
||||
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
static int
|
||||
get_monitor_event (void *monitor, int *value, char **address)
|
||||
{
|
||||
@ -89,6 +90,7 @@ get_monitor_event (void *monitor, int *value, char **address)
|
||||
}
|
||||
return event;
|
||||
}
|
||||
#endif
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// This methods receives and validates ZAP requestes (allowing or denying
|
||||
@ -151,10 +153,12 @@ void test_valid_creds (void *ctx, void *server, void *server_mon, char *endpoint
|
||||
rc = zmq_setsockopt (client, ZMQ_GSSAPI_PRINCIPAL,
|
||||
name, strlen (name) + 1);
|
||||
assert (rc == 0);
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
int name_type = ZMQ_GSSAPI_NT_HOSTBASED;
|
||||
rc = zmq_setsockopt (client, ZMQ_GSSAPI_PRINCIPAL_NAMETYPE,
|
||||
&name_type, sizeof (name_type));
|
||||
assert (rc == 0);
|
||||
#endif
|
||||
rc = zmq_connect (client, endpoint);
|
||||
assert (rc == 0);
|
||||
|
||||
@ -162,8 +166,10 @@ void test_valid_creds (void *ctx, void *server, void *server_mon, char *endpoint
|
||||
rc = zmq_close (client);
|
||||
assert (rc == 0);
|
||||
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
int event = get_monitor_event (server_mon, NULL, NULL);
|
||||
assert (event == ZMQ_EVENT_HANDSHAKE_SUCCEED);
|
||||
assert (event == ZMQ_EVENT_HANDSHAKE_SUCCEEDED);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Check security with valid but unauthorized credentials
|
||||
@ -179,10 +185,12 @@ void test_unauth_creds (void *ctx, void *server, void *server_mon, char *endpoin
|
||||
rc = zmq_setsockopt (client, ZMQ_GSSAPI_PRINCIPAL,
|
||||
name, strlen (name) + 1);
|
||||
assert (rc == 0);
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
int name_type = ZMQ_GSSAPI_NT_HOSTBASED;
|
||||
rc = zmq_setsockopt (client, ZMQ_GSSAPI_PRINCIPAL_NAMETYPE,
|
||||
&name_type, sizeof (name_type));
|
||||
assert (rc == 0);
|
||||
#endif
|
||||
zap_deny_all = 1;
|
||||
rc = zmq_connect (client, endpoint);
|
||||
assert (rc == 0);
|
||||
@ -190,8 +198,10 @@ void test_unauth_creds (void *ctx, void *server, void *server_mon, char *endpoin
|
||||
expect_bounce_fail (server, client);
|
||||
close_zero_linger (client);
|
||||
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
int event = get_monitor_event (server_mon, NULL, NULL);
|
||||
assert (event == ZMQ_EVENT_HANDSHAKE_FAILED);
|
||||
assert (event == ZMQ_EVENT_HANDSHAKE_FAILED_AUTH);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Check GSSAPI security with NULL client credentials
|
||||
@ -205,8 +215,10 @@ void test_null_creds (void *ctx, void *server, void *server_mon, char *endpoint)
|
||||
expect_bounce_fail (server, client);
|
||||
close_zero_linger (client);
|
||||
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
int event = get_monitor_event (server_mon, NULL, NULL);
|
||||
assert (event == ZMQ_EVENT_HANDSHAKE_FAILED);
|
||||
assert (event == ZMQ_EVENT_HANDSHAKE_FAILED_AUTH);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Check GSSAPI security with PLAIN client credentials
|
||||
@ -292,23 +304,30 @@ int main (void)
|
||||
rc = zmq_setsockopt (server, ZMQ_GSSAPI_PRINCIPAL,
|
||||
name, strlen (name) + 1);
|
||||
assert (rc == 0);
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
int name_type = ZMQ_GSSAPI_NT_HOSTBASED;
|
||||
rc = zmq_setsockopt (server, ZMQ_GSSAPI_PRINCIPAL_NAMETYPE,
|
||||
&name_type, sizeof (name_type));
|
||||
assert (rc == 0);
|
||||
#endif
|
||||
rc = zmq_bind (server, "tcp://127.0.0.1:*");
|
||||
assert (rc == 0);
|
||||
rc = zmq_getsockopt (server, ZMQ_LAST_ENDPOINT, my_endpoint, &len);
|
||||
assert (rc == 0);
|
||||
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
// Monitor handshake events on the server
|
||||
rc = zmq_socket_monitor (server, "inproc://monitor-server",
|
||||
ZMQ_EVENT_HANDSHAKE_SUCCEED | ZMQ_EVENT_HANDSHAKE_FAILED);
|
||||
ZMQ_EVENT_HANDSHAKE_SUCCEEDED | ZMQ_EVENT_HANDSHAKE_FAILED_AUTH);
|
||||
assert (rc == 0);
|
||||
#endif
|
||||
|
||||
// Create socket for collecting monitor events
|
||||
void *server_mon = zmq_socket (ctx, ZMQ_PAIR);
|
||||
void *server_mon = NULL;
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
server_mon = zmq_socket (ctx, ZMQ_PAIR);
|
||||
assert (server_mon);
|
||||
#endif
|
||||
|
||||
// Connect it to the inproc endpoints so they'll get events
|
||||
rc = zmq_connect (server_mon, "inproc://monitor-server");
|
||||
@ -322,7 +341,9 @@ int main (void)
|
||||
test_unauth_creds (ctx, server, server_mon, my_endpoint);
|
||||
|
||||
// Shutdown
|
||||
#ifdef ZMQ_BUILD_DRAFT_API
|
||||
close_zero_linger (server_mon);
|
||||
#endif
|
||||
rc = zmq_close (server);
|
||||
assert (rc == 0);
|
||||
rc = zmq_ctx_term (ctx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user