diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-12-08 23:12:17 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-12-13 14:54:02 +0000 |
commit | 2fa74faf927ed1ca9fc311a206c1e18a7295be7a (patch) | |
tree | 1d36a7411f0e471c20f4b1db84b02e1323463034 /openbsc/src/libcommon/oap_client.c | |
parent | 3cbc05210192324592cc8b79e12d3095be302f90 (diff) |
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
Diffstat (limited to 'openbsc/src/libcommon/oap_client.c')
-rw-r--r-- | openbsc/src/libcommon/oap_client.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/openbsc/src/libcommon/oap_client.c b/openbsc/src/libcommon/oap_client.c index 46dbcdda2..e372edea9 100644 --- a/openbsc/src/libcommon/oap_client.c +++ b/openbsc/src/libcommon/oap_client.c @@ -21,6 +21,7 @@ */ #include <string.h> +#include <errno.h> #include <osmocom/core/utils.h> #include <osmocom/crypt/auth.h> @@ -224,6 +225,21 @@ int oap_client_handle(struct oap_client_state *state, return -10; } + switch (state->state) { + case OAP_UNINITIALIZED: + LOGP(DLOAP, LOGL_ERROR, + "Received OAP message %d, but the OAP client is" + " not initialized\n", oap_msg.message_type); + return -ENOTCONN; + case OAP_DISABLED: + LOGP(DLOAP, LOGL_ERROR, + "Received OAP message %d, but the OAP client is" + " disabled\n", oap_msg.message_type); + return -ENOTCONN; + default: + break; + } + switch (oap_msg.message_type) { case OAP_MSGT_CHALLENGE_REQUEST: return handle_challenge(state, &oap_msg, msg_tx); |