asterisk/main
Matthew Jordan 373965dbff 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
2014-01-12 22:13:12 +00:00
..
editline memory leaks: Memory leak cleanup patch by Corey Farrell (first set) 2013-10-23 20:10:30 +00:00
stdtime Fix some uninitialized buffers for CDR handling valgrind found. 2013-08-28 23:15:43 +00:00
abstract_jb.c Fix jitter buffer log file creation 2013-09-18 20:04:14 +00:00
acl.c res_pjsip: AMI commands and events. 2013-11-23 17:26:57 +00:00
adsi.c Fix crash in unloading of res_adsi module 2012-06-26 13:23:12 +00:00
alaw.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
aoc.c Fix documentation replication issues 2013-08-01 17:07:52 +00:00
app.c Voicemail: Remove mailbox identifier format (box@context) assumptions in the system. 2013-12-19 16:52:43 +00:00
ast_expr2.c Allow the REALTIME() function to report errors back to the caller. 2012-07-11 17:16:50 +00:00
ast_expr2.fl Avoid cppcheck warnings; removing unused vars and a bit of cleanup. 2012-04-17 18:57:40 +00:00
ast_expr2.h Allow the REALTIME() function to report errors back to the caller. 2012-07-11 17:16:50 +00:00
ast_expr2.y Multiple revisions 360356-360357 2012-03-24 02:42:42 +00:00
ast_expr2f.c Doxygen Updates - janitor work 2012-09-21 17:14:59 +00:00
asterisk.c asterisk.c: suppress live_dangerously warning on rasterisk 2014-01-04 10:52:43 +00:00
asterisk.dynamics Remove the old stub files, preferring the optional_api method. 2010-07-14 20:48:59 +00:00
asterisk.exports.in Add _IO_stdin_used in version-script to fix SIGBUSes on Sparc. 2013-08-22 08:26:55 +00:00
astfd.c Unregister CLI commands on exit 2013-08-20 15:36:10 +00:00
astmm.c MALLOC_DEBUG: Change fence magic number to be completely different from the freed magic number. 2013-09-09 23:29:44 +00:00
astobj2.c astobj2: Correct ao2_iterator opacity violations 2014-01-09 20:34:19 +00:00
audiohook.c ari: Add Snoop operation for spying/whispering on channels. 2013-11-23 12:40:46 +00:00
autochan.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
autoservice.c Don't leak frames when memory is full in autoservice_run. 2013-08-09 20:29:09 +00:00
backtrace.c Fix memory corruption when trying to get "core show locks". 2013-08-23 18:07:40 +00:00
bridge.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
bridge_after.c A great big renaming patch 2013-07-25 04:06:32 +00:00
bridge_basic.c bridging: Give bridges a name and a known creator 2013-12-17 23:25:49 +00:00
bridge_channel.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
bridge_roles.c ARI: bridges/{bridgeID}/addChannel: add roles parameter 2013-08-05 16:59:13 +00:00
bucket.c sorcery, bucket: Change observer remove calls to take const callbacks struct. 2013-12-03 17:35:54 +00:00
buildinfo.c fix a few small things found by using sparse 2008-10-30 16:49:02 +00:00
callerid.c Allow for redirecting reasons to be set to arbitrary strings. 2012-09-25 19:29:14 +00:00
ccss.c Cache string values of formats on ast_format_cap() to save processing. 2013-10-03 14:58:16 +00:00
cdr.c CDRs: Synchronize dialplan applications that manipulate CDRs with the engine 2014-01-12 22:13:12 +00:00
cel.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
channel.c channels.c: core show channeltypes slicing 2013-12-30 23:25:53 +00:00
channel_internal_api.c Remove publication of a channel snapshot when the technology is set 2013-10-03 21:46:07 +00:00
chanvars.c ast_free() is null tollerant. 2013-08-28 16:09:12 +00:00
cli.c Resolve some memory leaks due to incorrect for loop / ao2 ref usage. 2013-10-18 18:44:21 +00:00
config.c res_pjsip: Add PJSIP CLI commands 2013-12-20 21:32:13 +00:00
config_options.c Ensure global types in the config framework are initialized 2013-09-20 22:44:11 +00:00
core_local.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
core_unreal.c channels: Return allocated channels locked. 2013-12-18 19:28:05 +00:00
crypt.c Fix utils directory breakage. 2013-07-04 13:06:15 +00:00
cygload.c Kill off red blobs in most of main/* 2012-03-22 19:51:16 +00:00
data.c memory leaks: Memory leak cleanup patch by Corey Farrell (second set) 2013-10-24 17:00:27 +00:00
datastore.c This is no longer needed. 2013-06-29 00:18:57 +00:00
db.c astdb: crash in sqlite3 during shutdown 2013-12-19 16:33:09 +00:00
devicestate.c ARI: Implement device state API 2013-11-23 17:48:28 +00:00
dial.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
dns.c Remove redundant code in dns.c 2013-07-14 02:05:04 +00:00
dnsmgr.c Migrate a large number of AMI events over to Stasis-Core 2013-05-24 20:44:07 +00:00
dsp.c Doxygen Updates - Title update 2012-10-18 14:17:40 +00:00
ecdisa.h Kill off red blobs in most of main/* 2012-03-22 19:51:16 +00:00
endpoints.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
enum.c Migrate a large number of AMI events over to Stasis-Core 2013-05-24 20:44:07 +00:00
event.c Fix incorrect usages of ast_realloc(). 2013-09-10 18:05:47 +00:00
features.c Restore Dial, Queue, and FollowMe 'I' option support. 2013-09-13 22:19:23 +00:00
features_config.c Features: Rearm the parking config options have moved warning for each reload. 2013-10-01 16:44:22 +00:00
file.c Cache string values of formats on ast_format_cap() to save processing. 2013-10-03 14:58:16 +00:00
fixedjitterbuf.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
fixedjitterbuf.h Kill off red blobs in most of main/* 2012-03-22 19:51:16 +00:00
format.c Add pass through support for Opus and VP8; Opus format attribute negotiation 2013-08-23 15:42:27 +00:00
format_cap.c Cache string values of formats on ast_format_cap() to save processing. 2013-10-03 14:58:16 +00:00
format_pref.c Address uninitialized conditional that valgrind found 2013-03-27 19:52:19 +00:00
frame.c Add pass through support for Opus and VP8; Opus format attribute negotiation 2013-08-23 15:42:27 +00:00
framehook.c framehooks: Re-iterate if framehook provides different frame. 2013-12-17 18:26:09 +00:00
fskmodem.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
fskmodem_float.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
fskmodem_int.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
global_datastores.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
hashtab.c Fix utilities compilation/linking. 2013-08-16 16:26:11 +00:00
heap.c Fix incorrect usages of ast_realloc(). 2013-09-10 18:05:47 +00:00
http.c http: Properly reject requests with Transfer-Encoding set 2013-12-24 16:50:48 +00:00
image.c Reset automerge property. 2012-12-11 22:25:21 +00:00
indications.c Fix incorrect usages of ast_realloc(). 2013-09-10 18:05:47 +00:00
io.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
jitterbuf.c jitterbuf: Fix memory leak on jitter buffer reset 2013-10-24 19:42:21 +00:00
json.c ARI: Don't leak implementation details 2013-11-22 20:10:46 +00:00
libasteriskssl.c Resolve memory leaks in TLS initialization and TLS client connections 2012-09-14 19:53:43 +00:00
libasteriskssl.exports.in Address OpenSSL initialization issues when using third-party libraries. 2012-01-30 21:21:16 +00:00
loader.c core/loader: Don't call dlclose in a while loop 2013-10-31 16:06:14 +00:00
lock.c Fix DEBUG_THREADS when lock is acquired in __constructor__ 2013-09-09 20:13:40 +00:00
logger.c Logging callid: Fix some sizeof() references per coding guidelines. 2014-01-10 18:17:48 +00:00
Makefile Add the bucket API. 2013-08-23 21:49:47 +00:00
manager.c manager: UserEvent including action on output 2014-01-03 20:02:03 +00:00
manager_bridges.c bridging: Give bridges a name and a known creator 2013-12-17 23:25:49 +00:00
manager_channels.c Multiple revisions 399887,400138,400178,400180-400181 2013-09-30 18:55:27 +00:00
manager_endpoints.c Multiple revisions 399887,400138,400178,400180-400181 2013-09-30 18:55:27 +00:00
manager_mwi.c Multiple revisions 399887,400138,400178,400180-400181 2013-09-30 18:55:27 +00:00
manager_system.c Multiple revisions 399887,400138,400178,400180-400181 2013-09-30 18:55:27 +00:00
md5.c md5: supress some compiler warnings. 2012-04-28 01:33:49 +00:00
media_index.c media_index: Make media indexing tolerable of bad symlinks. 2013-12-03 16:39:13 +00:00
message.c channels: Return allocated channels locked. 2013-12-18 19:28:05 +00:00
mixmonitor.c Removed quotes from svn:keywords props on a few files. 2013-07-29 17:51:25 +00:00
named_acl.c Fix various memory leaks 2013-08-30 19:22:59 +00:00
netsock.c Add IPv6 Support To chan_iax2 2013-10-04 21:41:58 +00:00
netsock2.c Add IPv6 Support To chan_iax2 2013-10-04 21:41:58 +00:00
optional_api.c optional_api: Make always use the standard malloc functions even with MALLOC_DEBUG. 2013-09-19 23:20:43 +00:00
parking.c astobj2: Add warn unused attribute to some functions. 2013-09-06 19:26:48 +00:00
pbx.c app_cdr,app_forkcdr,func_cdr: Synchronize with engine when manipulating state 2013-12-19 00:50:01 +00:00
pickup.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
plc.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
poll.c Merged revisions 285268 via svnmerge from 2010-09-07 19:09:08 +00:00
presencestate.c Strip down the old event system 2013-08-17 14:39:27 +00:00
privacy.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
rtp_engine.c Several components: fixing Typos in comments and code, "avaliable" instead of "available" 2013-12-17 23:38:02 +00:00
say.c say.c: correct time for polish 2013-12-20 21:18:00 +00:00
sched.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
sdp_srtp.c Merge in current pimp_my_sip work, including: 2013-06-22 14:03:22 +00:00
security_events.c security_events: log events with descriptive names 2013-12-19 20:48:19 +00:00
sem.c Multiple revisions 399887,400138,400178,400180-400181 2013-09-30 18:55:27 +00:00
sha1.c Doxygen Updates - janitor work 2012-09-21 17:14:59 +00:00
sip_api.c Don't make chan_sip export global symbols. 2012-10-11 15:49:02 +00:00
slinfactory.c Fix a memory copying bug in slinfactory which was causing mixmonitor issues. 2013-05-28 17:47:29 +00:00
sorcery.c res_pjsip: Add PJSIP CLI commands 2013-12-20 21:32:13 +00:00
sounds_index.c Whitespace fixes. 2013-12-20 19:06:57 +00:00
srv.c Removed #if checks for crazy old versions of OS X. 2013-05-08 20:25:28 +00:00
stasis.c stasis: Add methods to allow for synchronous publishing to subscriber 2014-01-12 22:07:01 +00:00
stasis_bridges.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
stasis_cache.c MALLOC_DEBUG: Fix some misuses of free() when MALLOC_DEBUG is enabled. 2013-10-02 17:12:49 +00:00
stasis_cache_pattern.c Multiple revisions 399887,400138,400178,400180-400181 2013-09-30 18:55:27 +00:00
stasis_channels.c channel locking: Add locking for channel snapshot creation 2013-12-18 20:33:37 +00:00
stasis_endpoints.c ARI: Don't leak implementation details 2013-11-22 20:10:46 +00:00
stasis_message.c ARI: Don't leak implementation details 2013-11-22 20:10:46 +00:00
stasis_message_router.c stasis: Add methods to allow for synchronous publishing to subscriber 2014-01-12 22:07:01 +00:00
stasis_system.c Convert CCSS manager events to stasis. 2013-07-19 18:00:35 +00:00
strcompat.c Add builtin roundf() for systems lacking it. 2013-01-19 20:54:07 +00:00
strings.c Move ast_str_container_alloc and friends 2013-08-02 14:08:34 +00:00
stun.c Reset automerge property. 2012-12-11 22:25:21 +00:00
syslog.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
taskprocessor.c taskprocessor: Made use pthread_equal() to compare thread ids. 2013-10-25 23:58:32 +00:00
tcptls.c security: Inhibit execution of privilege escalating functions 2013-12-16 19:11:51 +00:00
tdd.c Doxygen Updates - janitor work 2012-09-21 17:14:59 +00:00
term.c Revamp of terminal color codes 2013-02-14 18:47:56 +00:00
test.c test.c: Fix too sticky unit test failed status. 2013-12-13 20:17:22 +00:00
threadpool.c Fix threadpool rapid growth problem. 2013-06-20 16:29:35 +00:00
threadstorage.c Unregister CLI commands on exit 2013-08-20 15:36:10 +00:00
timing.c Reset automerge property. 2012-12-11 22:25:21 +00:00
translate.c translate: Move freeing of frame to after it is used. 2013-11-22 17:12:29 +00:00
udptl.c udptl: Dead code elimination. ast_udptl_bridge was not used. 2013-12-19 17:13:53 +00:00
ulaw.c Multiple revisions 369001-369002 2012-06-15 16:20:16 +00:00
utils.c res_pjsip: AMI commands and events. 2013-11-23 17:26:57 +00:00
uuid.c Add an \extref doxygen pointer for libuuid. 2013-04-26 20:32:11 +00:00
xml.c Detect and use xsltCleanupGlobals when available 2013-10-03 18:00:15 +00:00
xmldoc.c func_channel, chan_pjsip: Add CHANNEL read function support for chan_pjsip 2013-12-11 13:06:30 +00:00