Josh Colp (file) has started a rewrite of the T.38 passthrough implementation in Asterisk. This is very much needed. The code that was contributed for 1.4 was a bad hack and has caused a large number of issues that Josh and I have been struggling with for a long time – and a large number of bug reports.

At the same time maybe we should sit down and consider the architecture of the SIP channel. After my initial planning on chan_sip3, I’ve worked a lot on video, text telephony (T.140) and other media in SIP. The SIP channel, and Asterisk, is built as a telephony audio-only PBX with some video additions. Adding T.38 (fax over IP), T.140 (text) and enhanced video/audio (like multichannel audio) turns into ugly hacks. And adding TCP has proven to be an ugly hack too. Yes, it’s easy to add a TCP socket, that’s no big issue coding-wise. But to handle the calls properly, the signalling and being able to switch from UDP to TCP midcall – that turns it ugly.

This also leads to a bigger question – what’s a PBX today? If we where about to start an Asterisk 2.0 project – would we handle all kinds of media properly? Presence? Messaging? File transfer? We already have an embedded web server… What’s the limit of a PBX? Or is it really a PBX we’re building? Asterisk 1.0 certainly has a PBX architecture, should that also be the base architecture for Asterisk 2.0?

Anyway, a big thank you to File for starting the re-write. May the code be with you!