Retrying the dlrs from the store
If you’re using an external DB for dlr storage, there’s a slight chance that the carrier’s response to your MT (with the dlr information) would arrive after the dlr itself. If this happens, Kannel won’t be able to find the dlr (because it’s not there yet).
This patch implements an sleep and retry mechanism when calling dlr_get(). This aims to solve that problem.
2 new core parameters are defined:
dlr-retry-count -> How many times do we attempt to fetch the dlr? Default: 1
dlr-retry-delay -> How many milliseconds do we sleep before retrying? Default: 0
So, if you don’t set these parameters the behaviour remains as it was before patching. However, if you, for instance, set:
dlr-retry-count = 3
dlr-retry-delay = 200
Kannel will try 3 times in total (the original plus 2 more), pausing 200ms (0.2 seconds) before each attempt. If after the third attempt the DLR’s still missing, Kannel will display a warning as usual.
Download the patch from here: kannel-dlr-retry
Please try it and let me know what you think.