From 3e3a3d6e3c6edc683f29ce75cb3be5bda7f31838 Mon Sep 17 00:00:00 2001 From: mmichelson Date: Fri, 27 Jun 2008 21:00:47 +0000 Subject: Port revisions 124661 and 123650 from trunk to 1.6.0 Thanks to Atis Lezdins for pointing this out on the asterisk-dev mailing list git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@126023 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_queue.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'apps') diff --git a/apps/app_queue.c b/apps/app_queue.c index dd4750640..a30f7de1b 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -3015,11 +3015,18 @@ struct queue_transfer_ds { int starttime; }; +static void queue_transfer_destroy(void *data) +{ + struct queue_transfer_ds *qtds = data; + ast_free(qtds); +} + /*! \brief a datastore used to help correctly log attended transfers of queue callers */ static const struct ast_datastore_info queue_transfer_info = { .type = "queue_transfer", .chan_fixup = queue_transfer_fixup, + .destroy = queue_transfer_destroy, }; /*! \brief Log an attended transfer when a queue caller channel is masqueraded @@ -3067,7 +3074,12 @@ static int attended_transfer_occurred(struct ast_channel *chan) static void setup_transfer_datastore(struct queue_ent *qe, struct member *member, int starttime) { struct ast_datastore *ds; - struct queue_transfer_ds qtds; + struct queue_transfer_ds *qtds = ast_calloc(1, sizeof(*qtds)); + + if (!qtds) { + ast_log(LOG_WARNING, "Memory allocation error!\n"); + return; + } ast_channel_lock(qe->chan); if (!(ds = ast_channel_datastore_alloc(&queue_transfer_info, NULL))) { @@ -3076,11 +3088,11 @@ static void setup_transfer_datastore(struct queue_ent *qe, struct member *member return; } - qtds.qe = qe; + qtds->qe = qe; /* This member is refcounted in try_calling, so no need to add it here, too */ - qtds.member = member; - qtds.starttime = starttime; - ds->data = &qtds; + qtds->member = member; + qtds->starttime = starttime; + ds->data = qtds; ast_channel_datastore_add(qe->chan, ds); ast_channel_unlock(qe->chan); } -- cgit v1.2.3