[asterisk-commits] jpeeler: trunk r208155 - /trunk/channels/chan_dahdi.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Jul 22 17:42:37 CDT 2009
Author: jpeeler
Date: Wed Jul 22 17:42:33 2009
New Revision: 208155
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=208155
Log:
Reset the fax buffers back to default settings regardless of signaling in use -
Pointed out by Matt F.
Also in the case of not using a signaling module, set the law back to the
default as well.
Modified:
trunk/channels/chan_dahdi.c
Modified: trunk/channels/chan_dahdi.c
URL: http://svn.asterisk.org/svn-view/asterisk/trunk/channels/chan_dahdi.c?view=diff&rev=208155&r1=208154&r2=208155
==============================================================================
--- trunk/channels/chan_dahdi.c (original)
+++ trunk/channels/chan_dahdi.c Wed Jul 22 17:42:33 2009
@@ -4854,10 +4854,33 @@
}
#endif
+static int revert_fax_buffers(struct dahdi_pvt *p, struct ast_channel *ast)
+{
+ if (p->bufferoverrideinuse) {
+ /* faxbuffers are in use, revert them */
+ struct dahdi_bufferinfo bi = {
+ .txbufpolicy = p->buf_policy,
+ .rxbufpolicy = p->buf_policy,
+ .bufsize = p->bufsize,
+ .numbufs = p->buf_no
+ };
+ int bpres;
+
+ if ((bpres = ioctl(p->subs[SUB_REAL].dfd, DAHDI_SET_BUFINFO, &bi)) < 0) {
+ ast_log(LOG_WARNING, "Channel '%s' unable to revert buffer policy: %s\n", ast->name, strerror(errno));
+ }
+ p->bufferoverrideinuse = 0;
+ return bpres;
+ }
+
+ return -1;
+}
+
static int dahdi_hangup(struct ast_channel *ast)
{
int res = 0;
int idx,x;
+ int law;
/*static int restore_gains(struct dahdi_pvt *p);*/
struct dahdi_pvt *p = ast->tech_pvt;
struct dahdi_pvt *tmp = NULL;
@@ -4877,23 +4900,8 @@
restore_gains(p);
p->ignoredtmf = 0;
- if (p->bufferoverrideinuse) {
- /* faxbuffers are in use, revert them */
- struct dahdi_bufferinfo bi = {
- .txbufpolicy = p->buf_policy,
- .rxbufpolicy = p->buf_policy,
- .bufsize = p->bufsize,
- .numbufs = p->buf_no
- };
- int bpres;
-
- if ((bpres = ioctl(p->subs[SUB_REAL].dfd, DAHDI_SET_BUFINFO, &bi)) < 0) {
- ast_log(LOG_WARNING, "Channel '%s' unable to revert buffer policy: %s\n", ast->name, strerror(errno));
- }
- p->bufferoverrideinuse = 0;
- }
-
res = analog_hangup(p->sig_pvt, ast);
+ revert_fax_buffers(p, ast);
goto hangup_out;
}
@@ -4913,6 +4921,7 @@
ast_dsp_free(p->dsp);
p->dsp = NULL;
}
+ revert_fax_buffers(p, ast);
dahdi_setlinear(p->subs[SUB_REAL].dfd, 0);
law = DAHDI_LAW_DEFAULT;
res = ioctl(p->subs[SUB_REAL].dfd, DAHDI_SETLAW, &law);
@@ -5076,22 +5085,10 @@
p->dsp = NULL;
}
- if (p->bufferoverrideinuse) {
- /* faxbuffers are in use, revert them */
- struct dahdi_bufferinfo bi = {
- .txbufpolicy = p->buf_policy,
- .rxbufpolicy = p->buf_policy,
- .bufsize = p->bufsize,
- .numbufs = p->buf_no
- };
- int bpres;
-
- if ((bpres = ioctl(p->subs[SUB_REAL].dfd, DAHDI_SET_BUFINFO, &bi)) < 0) {
- ast_log(LOG_WARNING, "Channel '%s' unable to revert buffer policy: %s\n", ast->name, strerror(errno));
- }
- p->bufferoverrideinuse = 0;
- }
-
+ revert_fax_buffers(p, ast);
+
+ law = DAHDI_LAW_DEFAULT;
+ res = ioctl(p->subs[SUB_REAL].dfd, DAHDI_SETLAW, &law);
if (res < 0)
ast_log(LOG_WARNING, "Unable to set law on channel %d to default: %s\n", p->channel, strerror(errno));
/* Perform low level hangup if no owner left */
More information about the asterisk-commits
mailing list