diff options
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r-- | openbsc/src/libcommon/gsup_client.c | 1 | ||||
-rw-r--r-- | openbsc/src/libcommon/oap_client.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/openbsc/src/libcommon/gsup_client.c b/openbsc/src/libcommon/gsup_client.c index 0360e0a24..4c1fe6111 100644 --- a/openbsc/src/libcommon/gsup_client.c +++ b/openbsc/src/libcommon/gsup_client.c @@ -155,6 +155,7 @@ static int gsup_client_oap_handle(struct gsup_client *gsupc, struct msgb *msg_rx int rc; struct msgb *msg_tx; + /* If the oap_state is disabled, this will reject the messages. */ rc = oap_client_handle(&gsupc->oap_state, msg_rx, &msg_tx); msgb_free(msg_rx); if (rc < 0) 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); |