Index: apps/app_queue.c =================================================================== --- apps/app_queue.c (revision 249233) +++ apps/app_queue.c (working copy) @@ -998,6 +998,7 @@ static void update_realtime_members(struct call_queue *q); static int set_member_paused(const char *queuename, const char *interface, const char *reason, int paused); +static void rna(int rnatime, struct queue_ent *qe, char *interface, char *membername, int pause, int congestion); static void queue_transfer_fixup(void *data, struct ast_channel *old_chan, struct ast_channel *new_chan); /*! \brief sets the QUEUESTATUS channel variable */ @@ -2797,6 +2798,7 @@ /* Request the peer */ tmp->chan = ast_request(tech, qe->chan->nativeformats, qe->chan, location, &status); if (!tmp->chan) { /* If we can't, just go on to the next call */ + rna(0, qe, tmp->member->state_interface, tmp->member->membername, 0, 1); if (qe->chan->cdr) ast_cdr_busy(qe->chan->cdr); tmp->stillgoing = 0; @@ -2879,6 +2881,7 @@ /* Place the call, but don't wait on the answer */ if ((res = ast_call(tmp->chan, location, 0))) { /* Again, keep going even if there's an error */ + rna(0, qe, tmp->member->state_interface, tmp->member->membername, 0, 1); ast_debug(1, "ast call on peer returned %d\n", res); ast_verb(3, "Couldn't call %s\n", tmp->interface); ast_channel_unlock(tmp->chan); @@ -3101,7 +3104,7 @@ } /*! \brief RNA == Ring No Answer. Common code that is executed when we try a queue member and they don't answer. */ -static void rna(int rnatime, struct queue_ent *qe, char *interface, char *membername, int pause) +static void rna(int rnatime, struct queue_ent *qe, char *interface, char *membername, int pause, int congestion) { ast_verb(3, "Nobody picked up in %d ms\n", rnatime); @@ -3121,6 +3124,7 @@ "Member: %s\r\n" "MemberName: %s\r\n" "Ringtime: %d\r\n" + "Congestion: %d\r\n" "%s", qe->parent->name, qe->chan->uniqueid, @@ -3128,9 +3132,10 @@ interface, membername, rnatime, + congestion, qe->parent->eventwhencalled == QUEUE_EVENT_VARIABLES ? vars2manager(qe->chan, vars, sizeof(vars)) : ""); } - ast_queue_log(qe->parent->name, qe->chan->uniqueid, membername, "RINGNOANSWER", "%d", rnatime); + ast_queue_log(qe->parent->name, qe->chan->uniqueid, membername, "RINGNOANSWER", "%d|%d", rnatime, congestion); if (qe->parent->autopause && pause) { if (!set_member_paused(qe->parent->name, interface, "Auto-Pause", 1)) { ast_verb(3, "Auto-Pausing Queue Member %s in queue %s since they failed to answer.\n", interface, qe->parent->name); @@ -3379,7 +3384,7 @@ do_hang(o); endtime = (long) time(NULL); endtime -= starttime; - rna(endtime * 1000, qe, on, membername, 0); + rna(endtime * 1000, qe, on, membername, 0, 0); if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) { if (qe->parent->timeoutrestart) *to = orig; @@ -3397,7 +3402,7 @@ ast_cdr_busy(in->cdr); endtime = (long) time(NULL); endtime -= starttime; - rna(endtime * 1000, qe, on, membername, 0); + rna(endtime * 1000, qe, on, membername, 0, 1); do_hang(o); if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) { if (qe->parent->timeoutrestart) @@ -3453,7 +3458,7 @@ ast_frfree(f); } else { /* ast_read() returned NULL */ endtime = (long) time(NULL) - starttime; - rna(endtime * 1000, qe, on, membername, 1); + rna(endtime * 1000, qe, on, membername, 1, 0); do_hang(o); if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) { if (qe->parent->timeoutrestart) @@ -3498,7 +3503,7 @@ } if (!*to) { for (o = start; o; o = o->call_next) - rna(orig, qe, o->interface, o->member->membername, 1); + rna(orig, qe, o->interface, o->member->membername, 1, 0); } } Index: doc/manager_1_1.txt =================================================================== --- doc/manager_1_1.txt (revision 249233) +++ doc/manager_1_1.txt (working copy) @@ -381,6 +381,7 @@ Member: SIP/1000 MemberName: Thaddeus McClintock Ringtime: 10 + Congestion: 0 - Event: RegistryEntry Modules: chan_sip Index: doc/tex/queuelog.tex =================================================================== --- doc/tex/queuelog.tex (revision 249233) +++ doc/tex/queuelog.tex (working copy) @@ -95,11 +95,12 @@ The queueing system has been started for the first time this session. -\textbf{RINGNOANSWER(ringtime)} +\textbf{RINGNOANSWER(ringtime$|$congestion)} After trying for ringtime ms to connect to the available queue member, the attempt ended without the member picking up the call. Bad queue -member! +member! If there was an error calling the queue member congestion is +set to 1. \textbf{SYSCOMPAT}