Index: channels/chan_dahdi.c =================================================================== --- channels/chan_dahdi.c (revision 211229) +++ channels/chan_dahdi.c (working copy) @@ -1603,11 +1603,10 @@ } if (analog_p->ringt) { - analog_p->ringt--; + if (--analog_p->ringt == 1) { + return -1; + } } - if (analog_p->ringt == 1) { - return -1; - } if (p->cid_signalling == CID_SIG_V23_JP) { res = callerid_feed_jp(p->cs, buf, res, AST_LAW(p)); @@ -1706,11 +1705,11 @@ } break; } - if (analog_p->ringt) - analog_p->ringt--; - if (analog_p->ringt == 1) { - res = -1; - break; + if (analog_p->ringt) { + if (--analog_p->ringt == 1) { + res = -1; + break; + } } } } @@ -8977,11 +8976,11 @@ } break; } - if (p->ringt) - p->ringt--; - if (p->ringt == 1) { - res = -1; - break; + if (p->ringt) { + if (--p->ringt == 1) { + res = -1; + break; + } } } } @@ -9135,12 +9134,11 @@ break; } if (p->ringt) { - p->ringt--; + if (--p->ringt == 1) { + res = -1; + break; + } } - if (p->ringt == 1) { - res = -1; - break; - } samples += res; res = callerid_feed(cs, buf, res, AST_LAW(p)); if (res < 0) { @@ -9196,11 +9194,11 @@ } break; } - if (p->ringt) - p->ringt--; - if (p->ringt == 1) { - res = -1; - break; + if (p->ringt) { /* should this be outside of DAHDI_IOMUX_READ */ + if (--p->ringt == 1) { + res = -1; + break; + } } } }