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
diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h
index 6e67f39..36e9bc1 100644
--- a/include/osmocom/msc/transaction.h
+++ b/include/osmocom/msc/transaction.h
@@ -100,7 +100,8 @@
 				   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 f2de95f..8b1225e 100644
--- a/src/libmsc/gsm_04_11_gsup.c
+++ b/src/libmsc/gsm_04_11_gsup.c
@@ -176,7 +176,7 @@
 	}
 
 	/* 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 70a39e8..7c91c92 100644
--- a/src/libmsc/transaction.c
+++ b/src/libmsc/transaction.c
@@ -72,15 +72,15 @@
 }
 
 /*! 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) {