iamaleksey/oserl — pull request #3 by savonarola (2013-08-19 18:07:34+00:00)
Title: Fix mc/esme deadlock in trx mode

An attemt to fix closed but not resolved issue https://github.com/iamaleksey/oserl/issues/1. When sending pdus from gen_mc/gen_esme to sessions, events to session fsms are sent in a syncronous way. This causes deadlocks when there is an incoming pdu, which is passed from a session fsm to gen_mc/gen_esme syncronously.

But actually sending pdus to sessions doesn't need to be syncronous: the only result from session fsm is a unique ref, which is used further for passing to callbacks. This ref can be generated and returned immediately, and thus the entire outgoing pdu with the attached ref can be sent to the session fsm asyncronously. An attempt to make such a fix is contained in this PR. Мy generic examples which got constantly blocked (on both mc and esme sides) stopped blocking after fix.