Index: channels/chan_iax2.c =================================================================== --- channels/chan_iax2.c (revision 11) +++ channels/chan_iax2.c (working copy) @@ -1945,21 +1945,26 @@ { int which = 0; struct iax2_peer *p; + char *ret; /* 0 - iax2; 1 - show; 2 - peer; 3 - */ - if(pos == 3) { - ast_mutex_lock(&peerl.lock); - for(p = peerl.peers ; p ; p = p->next) { - if(!strncasecmp(p->name, word, strlen(word))) { - if(++which > state) { - return strdup(p->name); - } + if(pos != 3) + return NULL; + + ast_mutex_lock(&peerl.lock); + for(p = peerl.peers ; p ; p = p->next) { + if(!strncasecmp(p->name, word, strlen(word))) { + if(++which > state) { + break; } } - ast_mutex_unlock(&peerl.lock); } - - return NULL; + if (p) + ret = strdup(p->name); + else + ret = NULL; + ast_mutex_unlock(&peerl.lock); + return ret; } static int iax2_show_stats(int fd, int argc, char *argv[])