bsc: Reduce duplication with a macro.
diff --git a/openbsc/src/bsc/osmo_bsc_api.c b/openbsc/src/bsc/osmo_bsc_api.c
index 5a03856..0fe6bd2 100644
--- a/openbsc/src/bsc/osmo_bsc_api.c
+++ b/openbsc/src/bsc/osmo_bsc_api.c
@@ -36,18 +36,20 @@
return ret; \
}
+#define queue_msg_or_return(resp) \
+ if (!resp) { \
+ LOGP(DMSC, LOGL_ERROR, "Failed to allocate response.\n"); \
+ return; \
+ } \
+ bsc_queue_for_msc(conn, resp);
+
static void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
{
struct msgb *resp;
return_when_not_connected(conn);
resp = gsm0808_create_sapi_reject(dlci);
- if (!resp) {
- LOGP(DMSC, LOGL_ERROR, "Failed to allocate response.\n");
- return;
- }
-
- bsc_queue_for_msc(conn, resp);
+ queue_msg_or_return(resp);
}
static void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn,
@@ -58,12 +60,7 @@
LOGP(DMSC, LOGL_DEBUG, "CIPHER MODE COMPLETE from MS, forwarding to MSC\n");
resp = gsm0808_create_cipher_complete(msg, chosen_encr);
- if (!resp) {
- LOGP(DMSC, LOGL_ERROR, "Creating the response failed.\n");
- return;
- }
-
- bsc_queue_for_msc(conn, resp);
+ queue_msg_or_return(resp);
}
static int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg,
@@ -78,12 +75,7 @@
return_when_not_connected(conn);
resp = gsm0808_create_dtap(msg, link_id);
- if (!resp) {
- LOGP(DMSC, LOGL_ERROR, "Failed to allocate response.\n");
- return;
- }
-
- bsc_queue_for_msc(conn, resp);
+ queue_msg_or_return(resp);
}
static void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause,
@@ -95,12 +87,7 @@
resp = gsm0808_create_assignment_completed(rr_cause, chosen_channel,
encr_alg_id, speech_model);
- if (!resp) {
- LOGP(DMSC, LOGL_ERROR, "Failed to allocate response.\n");
- return;
- }
-
- bsc_queue_for_msc(conn, resp);
+ queue_msg_or_return(resp);
}
static void bsc_assign_fail(struct gsm_subscriber_connection *conn,
@@ -110,12 +97,7 @@
return_when_not_connected(conn);
resp = gsm0808_create_assignment_failure(cause, rr_cause);
- if (!resp) {
- LOGP(DMSC, LOGL_ERROR, "Failed to allocate response.\n");
- return;
- }
-
- bsc_queue_for_msc(conn, resp);
+ queue_msg_or_return(resp);
}
static int bsc_clear_request(struct gsm_subscriber_connection *conn, uint32_t cause)