From c6b9a87c9b761a3a45eda84cc06e3269f888b589 Mon Sep 17 00:00:00 2001 From: Rudi Giesler Date: Thu, 11 May 2017 13:23:46 +0200 Subject: [PATCH] Change to using modulus instead of bitmask for rollover --- vumi/transports/smpp/processors/default.py | 6 +++--- vumi/transports/smpp/smpp_service.py | 8 ++++---- vumi/transports/smpp/tests/test_smpp_service.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vumi/transports/smpp/processors/default.py b/vumi/transports/smpp/processors/default.py index 35bde38ce..6806a2a3e 100644 --- a/vumi/transports/smpp/processors/default.py +++ b/vumi/transports/smpp/processors/default.py @@ -471,9 +471,9 @@ class SubmitShortMessageProcessorConfig(Config): "of smaller messages with the user data headers. Default is `False`.", default=False, static=True) multipart_sar_reference_rollover = ConfigInt( - "The maximum value to set for the reference number of a multi part " - "SMS. When this value is reached, the number will rollover to 0.", - default=0xFFFF, static=True) + "The value at which the reference number of a multi part SMS will " + "roll over. eg. a value of 2 will result in a series 0, 1, 0, 1 ...", + default=0x10000, static=True) def post_validate(self): long_message_params = ( diff --git a/vumi/transports/smpp/smpp_service.py b/vumi/transports/smpp/smpp_service.py index 4186d555c..2db319be0 100644 --- a/vumi/transports/smpp/smpp_service.py +++ b/vumi/transports/smpp/smpp_service.py @@ -313,8 +313,8 @@ def csm_split_message(self, message): @inlineCallbacks def submit_csm_sar( - self, vumi_message_id, destination_addr, reference_rollover=0xFFFF, - **pdu_params): + self, vumi_message_id, destination_addr, + reference_rollover=0x10000, **pdu_params): """ Submit a concatenated SMS to the SMSC using the optional SAR parameter names in the various PDUS. @@ -340,8 +340,8 @@ def submit_csm_sar( for i, msg in enumerate(split_msg): pdu_params = pdu_params.copy() optional_parameters.update({ - # Reference number must be between 00 & FFFF - 'sar_msg_ref_num': (ref_num & reference_rollover), + # Reference number must be between 00 & the configure value + 'sar_msg_ref_num': (ref_num % reference_rollover), 'sar_total_segments': len(split_msg), 'sar_segment_seqnum': i + 1, }) diff --git a/vumi/transports/smpp/tests/test_smpp_service.py b/vumi/transports/smpp/tests/test_smpp_service.py index 8937852ec..d6291fb72 100644 --- a/vumi/transports/smpp/tests/test_smpp_service.py +++ b/vumi/transports/smpp/tests/test_smpp_service.py @@ -354,7 +354,7 @@ def test_submit_csm_sar_ref_num_custom_limit(self): long_message = 'This is a long message.' * 20 seq_nums = yield service.submit_csm_sar( 'abc123', 'dest_addr', short_message=long_message, - reference_rollover=0xFF) + reference_rollover=0x100) pdus = yield self.fake_smsc.await_pdus(4) msg_parts = [] msg_refs = []