aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbsc/include/openbsc/transaction.h3
-rw-r--r--openbsc/src/libmsc/gsm_04_08.c5
-rw-r--r--openbsc/src/libmsc/gsm_04_11.c6
-rw-r--r--openbsc/src/libmsc/transaction.c4
4 files changed, 11 insertions, 7 deletions
diff --git a/openbsc/include/openbsc/transaction.h b/openbsc/include/openbsc/transaction.h
index 795b9cd49..82891b8b3 100644
--- a/openbsc/include/openbsc/transaction.h
+++ b/openbsc/include/openbsc/transaction.h
@@ -66,7 +66,8 @@ struct gsm_trans *trans_find_by_id(struct gsm_subscriber_connection *conn,
struct gsm_trans *trans_find_by_callref(struct gsm_network *net,
uint32_t callref);
-struct gsm_trans *trans_alloc(struct gsm_subscriber *subscr,
+struct gsm_trans *trans_alloc(struct gsm_network *net,
+ struct gsm_subscriber *subscr,
uint8_t protocol, uint8_t trans_id,
uint32_t callref);
void trans_free(struct gsm_trans *trans);
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index ede6db389..ac1e9169e 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -3078,7 +3078,7 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
GSM48_CC_CAUSE_DEST_OOO);
}
/* Create transaction */
- trans = trans_alloc(subscr, GSM48_PDISC_CC, 0xff, data->callref);
+ trans = trans_alloc(net, subscr, GSM48_PDISC_CC, 0xff, data->callref);
if (!trans) {
DEBUGP(DCC, "No memory for trans.\n");
subscr_put(subscr);
@@ -3262,7 +3262,8 @@ static int gsm0408_rcv_cc(struct gsm_subscriber_connection *conn, struct msgb *m
DEBUGP(DCC, "Unknown transaction ID %x, "
"creating new trans.\n", transaction_id);
/* Create transaction */
- trans = trans_alloc(conn->subscr, GSM48_PDISC_CC,
+ trans = trans_alloc(conn->bts->network, conn->subscr,
+ GSM48_PDISC_CC,
transaction_id, new_callref++);
if (!trans) {
DEBUGP(DCC, "No memory for trans.\n");
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index bc9d59e71..9941e6b2a 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -765,7 +765,8 @@ int gsm0411_rcv_sms(struct gsm_subscriber_connection *conn,
if (!trans) {
DEBUGP(DLSMS, " -> (new transaction)\n");
- trans = trans_alloc(conn->subscr, GSM48_PDISC_SMS,
+ trans = trans_alloc(conn->bts->network, conn->subscr,
+ GSM48_PDISC_SMS,
transaction_id, new_callref++);
if (!trans) {
DEBUGP(DLSMS, " -> No memory for trans\n");
@@ -838,7 +839,8 @@ int gsm411_send_sms(struct gsm_subscriber_connection *conn, struct gsm_sms *sms)
DEBUGP(DLSMS, "send_sms_lchan()\n");
/* FIXME: allocate transaction with message reference */
- trans = trans_alloc(conn->subscr, GSM48_PDISC_SMS,
+ trans = trans_alloc(conn->bts->network, conn->subscr,
+ GSM48_PDISC_SMS,
transaction_id, new_callref++);
if (!trans) {
LOGP(DLSMS, LOGL_ERROR, "No memory for trans\n");
diff --git a/openbsc/src/libmsc/transaction.c b/openbsc/src/libmsc/transaction.c
index 5621067c0..2101ae96c 100644
--- a/openbsc/src/libmsc/transaction.c
+++ b/openbsc/src/libmsc/transaction.c
@@ -61,12 +61,12 @@ struct gsm_trans *trans_find_by_callref(struct gsm_network *net,
return NULL;
}
-struct gsm_trans *trans_alloc(struct gsm_subscriber *subscr,
+struct gsm_trans *trans_alloc(struct gsm_network *net,
+ struct gsm_subscriber *subscr,
uint8_t protocol, uint8_t trans_id,
uint32_t callref)
{
struct gsm_trans *trans;
- struct gsm_network *net = subscr->group->net;
DEBUGP(DCC, "subscr=%p, net=%p\n", subscr, net);