Merged revisions 209835 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
  r209835 | russell | 2009-08-01 05:43:40 -0500 (Sat, 01 Aug 2009) | 6 lines
  
  Fix ast_event_queue_and_cache() to actually do the cache() part.
  
  (closes issue #15624)
  Reported by: ffossard
  Tested by: russell
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@209837 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2009-08-01 10:45:42 +00:00
parent 0cad342de7
commit cd457fe71a

View File

@@ -1068,7 +1068,7 @@ static struct ast_event_ref *alloc_event_ref(void)
/*! \brief Duplicate an event and add it to the cache /*! \brief Duplicate an event and add it to the cache
* \note This assumes this index in to the cache is locked */ * \note This assumes this index in to the cache is locked */
static int attribute_unused ast_event_dup_and_cache(const struct ast_event *event) static int ast_event_dup_and_cache(const struct ast_event *event)
{ {
struct ast_event *dup_event; struct ast_event *dup_event;
struct ast_event_ref *event_ref; struct ast_event_ref *event_ref;
@@ -1097,6 +1097,7 @@ int ast_event_queue_and_cache(struct ast_event *event)
struct ast_event_ref tmp_event_ref = { struct ast_event_ref tmp_event_ref = {
.event = event, .event = event,
}; };
int res = -1;
if (!(container = ast_event_cache[ast_event_get_type(event)].container)) { if (!(container = ast_event_cache[ast_event_get_type(event)].container)) {
ast_log(LOG_WARNING, "cache requested for non-cached event type\n"); ast_log(LOG_WARNING, "cache requested for non-cached event type\n");
@@ -1107,8 +1108,10 @@ int ast_event_queue_and_cache(struct ast_event *event)
ao2_callback(container, OBJ_POINTER | OBJ_UNLINK | OBJ_MULTIPLE | OBJ_NODATA, ao2_callback(container, OBJ_POINTER | OBJ_UNLINK | OBJ_MULTIPLE | OBJ_NODATA,
ast_event_cmp, &tmp_event_ref); ast_event_cmp, &tmp_event_ref);
res = ast_event_dup_and_cache(event);
queue_event: queue_event:
return ast_event_queue(event); return ast_event_queue(event) ? -1 : res;
} }
static int handle_event(void *data) static int handle_event(void *data)