--- chan_sip.c-orig 2005-09-13 15:04:42.000000000 +0200 +++ chan_sip.c 2005-09-13 15:24:06.000000000 +0200 @@ -2546,8 +2546,9 @@ switch(condition) { case AST_CONTROL_RINGING: if (ast->_state == AST_STATE_RING) { - if (!ast_test_flag(p, SIP_PROGRESS_SENT) || - (ast_test_flag(p, SIP_PROG_INBAND) == SIP_PROG_INBAND_NEVER)) { + if ((!ast_test_flag(p, SIP_PROGRESS_SENT) || + (ast_test_flag(p, SIP_PROG_INBAND) == SIP_PROG_INBAND_NEVER)) && + ast_test_flag(p, SIP_PROG_INBAND) != SIP_PROG_INBAND_YES) { /* Send 180 ringing if out-of-band seems reasonable */ transmit_response(p, "180 Ringing", &p->initreq); ast_set_flag(p, SIP_RINGING); @@ -11009,10 +11010,11 @@ } else if (!strcasecmp(v->name, "progressinband")) { ast_set_flag(mask, SIP_PROG_INBAND); ast_clear_flag(flags, SIP_PROG_INBAND); - if (strcasecmp(v->value, "never")) - ast_set_flag(flags, SIP_PROG_INBAND_NO); + if (!strcasecmp(v->value, "never")) + ast_set_flag(flags, SIP_PROG_INBAND_NEVER); else if (ast_true(v->value)) ast_set_flag(flags, SIP_PROG_INBAND_YES); + else ast_set_flag(flags, SIP_PROG_INBAND_NO); } else if (!strcasecmp(v->name, "allowguest")) { #ifdef OSP_SUPPORT if (!strcasecmp(v->value, "osp"))