diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2019-01-23 21:22:27 +0700 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2019-02-01 18:55:54 +0000 |
commit | 36c44b210059bd75059008913ad05976dfef7d7e (patch) | |
tree | 595a8558a3f1d839302ceaf10ebf22ae0b9a93d6 | |
parent | ce9e1f664ed752dd99c83b4024ce81d685a79215 (diff) |
transaction: change arguments of trans_find_by_sm_rp_mr()
The need to pass a pointer to RAN connection in order to find
a transaction limits possible use cases of trans_find_by_sm_rp_mr(),
e.g. when we need to find a transaction, but RAN connection is not
established yet.
Moreover, the pointer to RAN connection was only used to obtain
pointers to gsm_network and vlr_subscr, so we can just
pass them directly.
Change-Id: I093f36d63e671e50e54fc6236e97a777cc6da77b
-rw-r--r-- | include/osmocom/msc/transaction.h | 3 | ||||
-rw-r--r-- | src/libmsc/gsm_04_11_gsup.c | 2 | ||||
-rw-r--r-- | src/libmsc/transaction.c | 8 |
3 files changed, 7 insertions, 6 deletions
diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h index 6e67f3909..36e9bc1ed 100644 --- a/include/osmocom/msc/transaction.h +++ b/include/osmocom/msc/transaction.h @@ -100,7 +100,8 @@ struct gsm_trans *trans_find_by_id(const struct ran_conn *conn, uint8_t proto, uint8_t trans_id); struct gsm_trans *trans_find_by_callref(const struct gsm_network *net, uint32_t callref); -struct gsm_trans *trans_find_by_sm_rp_mr(const struct ran_conn *conn, +struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net, + const struct vlr_subscr *vsub, uint8_t sm_rp_mr); struct gsm_trans *trans_alloc(struct gsm_network *net, diff --git a/src/libmsc/gsm_04_11_gsup.c b/src/libmsc/gsm_04_11_gsup.c index f2de95f70..8b1225eeb 100644 --- a/src/libmsc/gsm_04_11_gsup.c +++ b/src/libmsc/gsm_04_11_gsup.c @@ -176,7 +176,7 @@ int gsm411_gsup_mo_handler(struct vlr_subscr *vsub, } /* Attempt to find DTAP-transaction */ - trans = trans_find_by_sm_rp_mr(conn, *(gsup_msg->sm_rp_mr)); + trans = trans_find_by_sm_rp_mr(net, vsub, *(gsup_msg->sm_rp_mr)); if (!trans) { LOGP(DLSMS, LOGL_NOTICE, "No transaction found for %s, " "ignoring %s-%s message...\n", vlr_subscr_name(vsub), diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c index 70a39e852..7c91c9225 100644 --- a/src/libmsc/transaction.c +++ b/src/libmsc/transaction.c @@ -72,15 +72,15 @@ struct gsm_trans *trans_find_by_callref(const struct gsm_network *net, } /*! Find a transaction by SM-RP-MR (RP Message Reference) - * \param[in] conn Connection in which we want to find transaction + * \param[in] net Network in which we should search + * \param[in] vsub Subscriber for which we should search * \param[in] sm_rp_mr RP Message Reference (see GSM TS 04.11, section 8.2.3) * \returns Matching transaction, NULL otherwise */ -struct gsm_trans *trans_find_by_sm_rp_mr(const struct ran_conn *conn, +struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net, + const struct vlr_subscr *vsub, uint8_t sm_rp_mr) { - struct gsm_network *net = conn->network; - struct vlr_subscr *vsub = conn->vsub; struct gsm_trans *trans; llist_for_each_entry(trans, &net->trans_list, entry) { |