Skip to content

Commit

Permalink
Clear remote message redis keys when we get delivery reports
Browse files Browse the repository at this point in the history
  • Loading branch information
justinvdm committed Oct 9, 2015
1 parent c94815e commit 4f467df
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
6 changes: 6 additions & 0 deletions vumi/transports/smpp/smpp_transport.py
Expand Up @@ -236,6 +236,10 @@ def set_remote_message_id(self, message_id, smpp_message_id):
def get_internal_message_id(self, smpp_message_id):
return self.redis.get(remote_message_key(smpp_message_id))

def delete_remote_message_id(self, smpp_message_id):
key = remote_message_key(smpp_message_id)
return self.redis.delete(key)


class SmppTransceiverTransport(Transport):

Expand Down Expand Up @@ -402,6 +406,8 @@ def handle_delivery_report(self, receipted_message_id, delivery_status):
dr = yield self.publish_delivery_report(
user_message_id=message_id,
delivery_status=delivery_status)

yield self.message_stash.delete_remote_message_id(receipted_message_id)
returnValue(dr)


Expand Down
15 changes: 15 additions & 0 deletions vumi/transports/smpp/tests/test_smpp_transport.py
Expand Up @@ -1489,6 +1489,21 @@ def test_delivery_report_for_unknown_message(self):
"report. Delivery report from %s "
"discarded." % self.tx_helper.transport_name,))

@inlineCallbacks
def test_delivery_report_delete_stored_remote_id(self):
transport = yield self.get_transport()
yield transport.message_stash.set_remote_message_id('bar', 'foo')

pdu = DeliverSM(sequence_number=1, esm_class=4)
pdu.add_optional_parameter('receipted_message_id', 'foo')
pdu.add_optional_parameter('message_state', 2)
yield self.fake_smsc.handle_pdu(pdu)

yield self.tx_helper.wait_for_dispatched_events(1)

self.assertFalse(
(yield transport.redis.exists(remote_message_key('foo'))))

@inlineCallbacks
def test_reconnect(self):
transport = yield self.get_transport(bind=False)
Expand Down

0 comments on commit 4f467df

Please sign in to comment.