This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Vadim Yanitskiy gerrit-no-reply at lists.osmocom.orgVadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/12059
Change subject: (HACK) libmsc/gsm_04_11.c: properly handle MMS indication
......................................................................
(HACK) libmsc/gsm_04_11.c: properly handle MMS indication
MMS (More Messages to Send) is a part of MT-ForwardSM-Req message,
that is used by ESME to indicate that there are more MT SMS messages
to be sent, so the MSC should keep RAN connection open.
Change-Id: Ic46b04913b2e8cc5d11a39426dcc1bfe11f1d31e
Related Change-Id: (TTCN) I6308586a70c4fb3254c519330a61a9667372149f
Related: OS#3587
---
M include/osmocom/msc/gsm_04_11.h
M include/osmocom/msc/ran_conn.h
M include/osmocom/msc/transaction.h
M src/libmsc/gsm_04_11.c
M src/libmsc/gsm_04_11_gsup.c
M src/libmsc/osmo_msc.c
6 files changed, 25 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/59/12059/1
diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h
index 4297cdb..0e5b3d2 100644
--- a/include/osmocom/msc/gsm_04_11.h
+++ b/include/osmocom/msc/gsm_04_11.h
@@ -42,7 +42,8 @@
int gsm411_send_sms(struct gsm_network *net,
struct vlr_subscr *vsub,
struct gsm_sms *sms);
-int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub,
+int gsm411_send_rp_data(struct gsm_network *net,
+ struct vlr_subscr *vsub, uint8_t *mms_ind,
size_t sm_rp_oa_len, const uint8_t *sm_rp_oa,
size_t sm_rp_ud_len, const uint8_t *sm_rp_ud);
diff --git a/include/osmocom/msc/ran_conn.h b/include/osmocom/msc/ran_conn.h
index d71872e..5975a59 100644
--- a/include/osmocom/msc/ran_conn.h
+++ b/include/osmocom/msc/ran_conn.h
@@ -220,6 +220,7 @@
RAN_CONN_USE_TRANS_SMS,
RAN_CONN_USE_TRANS_NC_SS,
RAN_CONN_USE_SILENT_CALL,
+ RAN_CONN_USE_MT_SMS_MMTS,
RAN_CONN_USE_RELEASE,
};
diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h
index 0760c07..a987b1c 100644
--- a/include/osmocom/msc/transaction.h
+++ b/include/osmocom/msc/transaction.h
@@ -78,6 +78,9 @@
/* SM-RP-MR, Message Reference (see GSM TS 04.11, section 8.2.3) */
uint8_t sm_rp_mr;
+ /* SM-RP-MMS, More Messages to Send
+ * (see GSM 3GPP TS 29.002, section 7.6.8.7) */
+ bool sm_rp_mms;
struct gsm_sms *sms;
} sms;
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 01f1cb5..c77c4ec 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -1133,7 +1133,8 @@
}
/* Low-level function to send raw RP-DATA to a given subscriber */
-int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub,
+int gsm411_send_rp_data(struct gsm_network *net,
+ struct vlr_subscr *vsub, uint8_t *mms_ind,
size_t sm_rp_oa_len, const uint8_t *sm_rp_oa,
size_t sm_rp_ud_len, const uint8_t *sm_rp_ud)
{
@@ -1146,6 +1147,10 @@
if (!trans)
return -ENOMEM;
+ /* Handle MMS indication */
+ if (mms_ind != NULL && *mms_ind != 0x00)
+ trans->sms.sm_rp_mms = true;
+
/* Allocate a message buffer for to be encoded SMS */
msg = gsm411_msgb_alloc();
if (!msg) {
@@ -1277,6 +1282,17 @@
trans->sms.smc_inst.mn_recv = NULL;
trans->sms.smc_inst.mm_send = NULL;
+ /* HACK: handle SM-RP-MMS (More Messages to Send) */
+ if (trans->conn != NULL) {
+ if (trans->sms.sm_rp_mms) {
+ if (!ran_conn_used_by(trans->conn, RAN_CONN_USE_MT_SMS_MMTS))
+ ran_conn_get(trans->conn, RAN_CONN_USE_MT_SMS_MMTS);
+ } else {
+ if (ran_conn_used_by(trans->conn, RAN_CONN_USE_MT_SMS_MMTS))
+ ran_conn_put(trans->conn, RAN_CONN_USE_MT_SMS_MMTS);
+ }
+ }
+
if (trans->sms.sms) {
LOGP(DLSMS, LOGL_ERROR, "Transaction contains SMS.\n");
send_signal(S_SMS_UNKNOWN_ERROR, trans, trans->sms.sms, 0);
diff --git a/src/libmsc/gsm_04_11_gsup.c b/src/libmsc/gsm_04_11_gsup.c
index 9b15961..2aedbf4 100644
--- a/src/libmsc/gsm_04_11_gsup.c
+++ b/src/libmsc/gsm_04_11_gsup.c
@@ -280,7 +280,7 @@
goto msg_error;
/* Send RP-DATA */
- rc = gsm411_send_rp_data(net, vsub,
+ rc = gsm411_send_rp_data(net, vsub, gsup_msg->sm_rp_mms,
gsup_msg->sm_rp_oa_len, gsup_msg->sm_rp_oa,
gsup_msg->sm_rp_ui_len, gsup_msg->sm_rp_ui);
if (rc) {
diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c
index 52277b7..a996e14 100644
--- a/src/libmsc/osmo_msc.c
+++ b/src/libmsc/osmo_msc.c
@@ -316,6 +316,7 @@
{RAN_CONN_USE_TRANS_SMS, "trans_sms"},
{RAN_CONN_USE_TRANS_NC_SS, "trans_nc_ss"},
{RAN_CONN_USE_SILENT_CALL, "silent_call"},
+ {RAN_CONN_USE_MT_SMS_MMTS, "mt_sms_mmts"},
{RAN_CONN_USE_RELEASE, "release"},
{0, NULL},
};
--
To view, visit https://gerrit.osmocom.org/12059
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic46b04913b2e8cc5d11a39426dcc1bfe11f1d31e
Gerrit-Change-Number: 12059
Gerrit-PatchSet: 1
Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181202/349ea21b/attachment.htm>