CDRs: Synchronize dialplan applications that manipulate CDRs with the engine
authorMatthew Jordan <mjordan@digium.com>
Sun, 12 Jan 2014 22:13:12 +0000 (22:13 +0000)
committerMatthew Jordan <mjordan@digium.com>
Sun, 12 Jan 2014 22:13:12 +0000 (22:13 +0000)
commit373965dbff734b96132f61741838d6797c4a1876
treedd6da807b85c32aa86f9bf7ac86b1b62152558c0
parentf8aaf585a39d496479eb8a4e55f2e327d02b37ca
CDRs: Synchronize dialplan applications that manipulate CDRs with the engine

In https://reviewboard.asterisk.org/r/3057/, applications and functions that
manipulate CDRs were made to interact over Stasis. This was done to
synchronize manipulations of CDRs from the dialplan with the updates the
engine itself receives over the message bus.

This change rested on a faulty premise: that messages published to the CDR
topic or to a topic that forwards to the CDR topic are synchronized with the
messages handled by the CDR topic subscription in the CDR engine. This is not
the case. There is no ordering guaranteed for two messages published to the
same topic; ordering is only guaranteed if a message is published to the same
subscriber.

Stasis was modified in r405311 to allow a publisher to synchronize on the
subscriber. This patch uses that API to synchronize the CDR publishers with
the CDR engine message router, which maintains the overall topic subscription.

(closes issue ASTERISK-22884)
Reported by: Matt Jordan

Review: https://reviewboard.asterisk.org/r/3099/
........

Merged revisions 405312 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@405314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
apps/app_cdr.c
apps/app_forkcdr.c
funcs/func_cdr.c
include/asterisk/cdr.h
main/cdr.c