oap_client: reject all messages in disabled/uninitialized state
Fixes the bug indicated in oap_client_test.c: adjust to actually expect the
proper behavior.
Also adjust for modified return value for message rejection. Instead of -1,
just expect < 0.
Adjust experr for new error messages.
Related: OS#1592
Change-Id: I16165d228653e8a2689f9df94b77b470c06480c6
diff --git a/openbsc/tests/oap/oap_client_test.c b/openbsc/tests/oap/oap_client_test.c
index 45decf8..ab651e6 100644
--- a/openbsc/tests/oap/oap_client_test.c
+++ b/openbsc/tests/oap/oap_client_test.c
@@ -52,19 +52,15 @@
fprintf(stderr, "- make sure filling with zeros means uninitialized\n");
OSMO_ASSERT(state->state == OAP_UNINITIALIZED);
- fprintf(stderr, "- reject messages in uninitialized state EXPECTING BUGS\n");
+ fprintf(stderr, "- reject messages in uninitialized state\n");
memset(&oap_rx, 0, sizeof(oap_rx));
state->client_id = 1;
oap_rx.message_type = OAP_MSGT_REGISTER_ERROR;
msg_rx = oap_client_encoded(&oap_rx);
- /* ATTENTION: This shows a bug in OAP: the rc should be < 0, but OAP
- * happily accepts this message and breaks the uninitialized state. The
- * expected rc, state and msg_tx will be fixed along with the fix. */
- OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) == 0 /* BUG, expecting < 0 */);
- OSMO_ASSERT(state->state == OAP_REQUESTED_CHALLENGE /* BUG, expecting OAP_UNINITIALIZED */);
+ OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) < 0);
+ OSMO_ASSERT(state->state == OAP_UNINITIALIZED);
msgb_free(msg_rx);
- OSMO_ASSERT(msg_tx /* BUG, expecting NULL */);
- msgb_free(msg_tx);
+ OSMO_ASSERT(!msg_tx);
fprintf(stderr, "- reject messages in disabled state\n");
memset(state, 0, sizeof(*state));
@@ -73,14 +69,10 @@
state->client_id = 1;
oap_rx.message_type = OAP_MSGT_REGISTER_ERROR;
msg_rx = oap_client_encoded(&oap_rx);
- /* ATTENTION: This shows a bug in OAP: the rc should be < 0, but OAP
- * happily accepts this message and breaks the uninitialized state. The
- * expected rc, state and msg_tx will be fixed along with the fix. */
- OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) == 0 /* BUG, expecting < 0 */);
- OSMO_ASSERT(state->state == OAP_REQUESTED_CHALLENGE /* BUG, expecting OAP_DISABLED */);
+ OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) < 0);
+ OSMO_ASSERT(state->state == OAP_DISABLED);
msgb_free(msg_rx);
- OSMO_ASSERT(msg_tx /* BUG, expecting NULL */);
- msgb_free(msg_tx);
+ OSMO_ASSERT(!msg_tx);
fprintf(stderr, "- invalid client_id and shared secret\n");
memset(state, 0, sizeof(*state));
@@ -180,11 +172,11 @@
OSMO_ASSERT(state->state == OAP_INITIALIZED);
state->state = OAP_UNINITIALIZED;
- OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) == -1);
+ OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) < 0);
OSMO_ASSERT(!msg_tx);
state->state = OAP_DISABLED;
- OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) == -1);
+ OSMO_ASSERT(oap_client_handle(state, msg_rx, &msg_tx) < 0);
OSMO_ASSERT(!msg_tx);
state->state = OAP_INITIALIZED;