--- /root/asterisk-12.5.0Untouched/apps/app_queue.c 2014-08-22 10:27:28.075276236 +0200 +++ apps/app_queue.c 2014-09-09 13:56:17.026475181 +0200 @@ -6191,6 +6191,8 @@ struct ast_datastore *datastore; struct queue_end_bridge *queue_end_bridge = NULL; + int wx3nomissedqueuetimeout = 0; + ast_channel_lock(qe->chan); datastore = ast_channel_datastore_find(qe->chan, &dialed_interface_info, NULL); ast_channel_unlock(qe->chan); @@ -6436,6 +6438,10 @@ /* User exited by pressing a digit */ res = digit; } + //IF user didn't hang up or exited by pressing a digit, this is a queue-timeout? don't produce missed calls! + if (res == 0) { + wx3nomissedqueuetimeout=1; + } if (res == -1) { ast_debug(1, "%s: Nobody answered.\n", ast_channel_name(qe->chan)); } @@ -6726,7 +6732,7 @@ ao2_ref(member, -1); } out: - hangupcalls(qe, outgoing, NULL, qe->cancel_answered_elsewhere); + hangupcalls(qe, outgoing, NULL, (wx3nomissedqueuetimeout == 1) ? wx3nomissedqueuetimeout : qe->cancel_answered_elsewhere); return res; }