<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="https://reviewboard.asterisk.org/r/1116/">https://reviewboard.asterisk.org/r/1116/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On March 4th, 2011, 9:51 a.m., <b>Russell Bryant</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">It's very nice to see some additional work on this functionality. I like the direction this patch is going right now. Specifically, I like that it no longer requires a specific endpoint application to run anymore. That was one of the key things that I wanted to see different.
There are still some things that I would like to see a bit different from how it works right now. Even though it doesn't require running a T38Gateway() application directly, it still completely hijacks the core channel bridging loop and runs its own bridging loop. I would like to see this implemented in such a way that it still uses the core channel bridging loop. We started making some notes about this on this wiki page a while back:
https://wiki.asterisk.org/wiki/display/AST/T.38+Gateway
In general, what I would like to see is a way to enable this functionality from the dialplan on any channel type.
; not necessarily exactly this, but you get the idea ...
exten => foo,1,Set(T38_GATEWAY()=on)
The dialplan function should create a T.38 gateway object and store it on a channel datastore. This gateway object should take advantage of the frame hook API to intercept all audio, udptl, and control frames (see include/asterisk/framehook.h). ast_queue_frame() and ast_write() can be used to write back out what comes out of the gateway.
This code is a great start toward getting to where we need to go with this. </pre>
</blockquote>
<p>On March 8th, 2011, 4:11 a.m., <b>irroot</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Update
The pesky hijacking of the bridge loop is busy been eradicated.
FAXOPT has now got a new option t38gateway that enables or disables the negotiation of gateway mode FAXOPT(t38gateway)=yes/no
this option can be set in res_fax.conf.
im using a ast_generator to write T30 frames to the channel this will allow using frame hooks properly at the moment
it reads a packet on c0 and writes it to c0 the bridge loop actually does not do what is expected and passes traffic
from c0 -> c1.
frame hooks should not call a ast_write(chan...) from within __ast_read(chan...) use of a generator is more correct for this.
the faxopt function already stores a object on the channel that is been used.
</pre>
</blockquote>
</blockquote>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Awesome! I'm amazed at the turnaround time on this. I'll see what I can do to get someone from Digium to get involved with helping to review and test this as soon as I can. It may be a couple of weeks, though.
In the meantime, testing of this patch from anyone would be incredibly helpful.</pre>
<br />
<p>- Russell</p>
<br />
<p>On March 5th, 2011, 9:14 a.m., irroot wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.orgrb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Asterisk Developers, Russell Bryant, dimas, Leif Madsen, and dafe_von_cetin.</div>
<div>By irroot.</div>
<p style="color: grey;"><i>Updated 2011-03-05 09:14:13</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Hi there the patch that was going around circa 2008 to implement this in 1.4/1.6 app_fax has been moved to trunk [1.10]
ive made some cleanups and moved it into res_fax res_fax_spandsp this is the framework and not production code
unfortunately i have no means of testing it at the moment and require help.
i have cleaned the code up substantially it is related to R459
hope this is found useful and aids in the goal to get it in 1.10.
Adds application FaxGateway / FaxDetect
Adds alternate bridge to Dial with new option.</pre>
</td>
</tr>
</table>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="https://issues.asterisk.org/view.php?id=13405">13405</a>
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>/trunk/channels/chan_sip.c <span style="color: grey">(309340)</span></li>
<li>/trunk/channels/sip/include/sip.h <span style="color: grey">(309340)</span></li>
<li>/trunk/configs/sip.conf.sample <span style="color: grey">(309340)</span></li>
<li>/trunk/include/asterisk/channel.h <span style="color: grey">(309340)</span></li>
<li>/trunk/include/asterisk/res_fax.h <span style="color: grey">(309340)</span></li>
<li>/trunk/main/channel.c <span style="color: grey">(309340)</span></li>
<li>/trunk/res/res_fax.c <span style="color: grey">(309340)</span></li>
<li>/trunk/res/res_fax_spandsp.c <span style="color: grey">(309340)</span></li>
</ul>
<p><a href="https://reviewboard.asterisk.org/r/1116/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>