Index: channels/chan_dahdi.c =================================================================== --- channels/chan_dahdi.c (revision 386925) +++ channels/chan_dahdi.c (working copy) @@ -5127,9 +5127,12 @@ if (drc) { k = drc_sample(k, drc); } - k = (float)k*linear_gain; - if (k > 32767) k = 32767; - if (k < -32767) k = -32767; + k = (float)k * linear_gain; + if (k > 32767) { + k = 32767; + } else if (k < -32768) { + k = -32768; + } g->txgain[j] = AST_LIN2A(k); } else { g->txgain[j] = j; @@ -5143,9 +5146,12 @@ if (drc) { k = drc_sample(k, drc); } - k = (float)k*linear_gain; - if (k > 32767) k = 32767; - if (k < -32767) k = -32767; + k = (float)k * linear_gain; + if (k > 32767) { + k = 32767; + } else if (k < -32768) { + k = -32768; + } g->txgain[j] = AST_LIN2MU(k); } else { @@ -5170,9 +5176,12 @@ if (drc) { k = drc_sample(k, drc); } - k = (float)k*linear_gain; - if (k > 32767) k = 32767; - if (k < -32767) k = -32767; + k = (float)k * linear_gain; + if (k > 32767) { + k = 32767; + } else if (k < -32768) { + k = -32768; + } g->rxgain[j] = AST_LIN2A(k); } else { g->rxgain[j] = j; @@ -5186,9 +5195,12 @@ if (drc) { k = drc_sample(k, drc); } - k = (float)k*linear_gain; - if (k > 32767) k = 32767; - if (k < -32767) k = -32767; + k = (float)k * linear_gain; + if (k > 32767) { + k = 32767; + } else if (k < -32768) { + k = -32768; + } g->rxgain[j] = AST_LIN2MU(k); } else { g->rxgain[j] = j;