@ -2589,6 +2589,7 @@ static void queue_transfer_fixup(void *data, struct ast_channel *old_chan, struc
}
}
ast_channel_datastore_remove ( new_chan , datastore ) ;
ast_channel_datastore_remove ( new_chan , datastore ) ;
ast_channel_datastore_free ( datastore ) ;
}
}
/*! \brief mechanism to tell if a queue caller was atxferred by a queue member.
/*! \brief mechanism to tell if a queue caller was atxferred by a queue member.
@ -3109,6 +3110,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
bridge = ast_bridge_call ( qe - > chan , peer , & bridge_config ) ;
bridge = ast_bridge_call ( qe - > chan , peer , & bridge_config ) ;
if ( ! attended_transfer_occurred ( qe - > chan ) ) {
if ( ! attended_transfer_occurred ( qe - > chan ) ) {
struct ast_datastore * transfer_ds = ast_channel_datastore_find ( qe - > chan , & queue_transfer_info , NULL ) ;
if ( strcasecmp ( oldcontext , qe - > chan - > context ) | | strcasecmp ( oldexten , qe - > chan - > exten ) ) {
if ( strcasecmp ( oldcontext , qe - > chan - > context ) | | strcasecmp ( oldexten , qe - > chan - > exten ) ) {
ast_queue_log ( queuename , qe - > chan - > uniqueid , member - > membername , " TRANSFER " , " %s|%s|%ld|%ld " ,
ast_queue_log ( queuename , qe - > chan - > uniqueid , member - > membername , " TRANSFER " , " %s|%s|%ld|%ld " ,
qe - > chan - > exten , qe - > chan - > context , ( long ) ( callstart - qe - > start ) ,
qe - > chan - > exten , qe - > chan - > context , ( long ) ( callstart - qe - > start ) ,
@ -3147,6 +3149,12 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
( long ) ( time ( NULL ) - callstart ) ,
( long ) ( time ( NULL ) - callstart ) ,
qe - > parent - > eventwhencalled = = QUEUE_EVENT_VARIABLES ? vars2manager ( qe - > chan , vars , sizeof ( vars ) ) : " " ) ;
qe - > parent - > eventwhencalled = = QUEUE_EVENT_VARIABLES ? vars2manager ( qe - > chan , vars , sizeof ( vars ) ) : " " ) ;
}
}
if ( transfer_ds ) {
ast_channel_lock ( qe - > chan ) ;
ast_channel_datastore_remove ( qe - > chan , transfer_ds ) ;
ast_channel_datastore_free ( transfer_ds ) ;
ast_channel_unlock ( qe - > chan ) ;
}
}
}
if ( bridge ! = AST_PBX_NO_HANGUP_PEER )
if ( bridge ! = AST_PBX_NO_HANGUP_PEER )