|
List Info
Thread: T.38 Fax Reinvite.
|
|
| T.38 Fax Reinvite. |
  Australia |
2007-05-15 02:02:08 |
|
|
Hi,
I am working on T.38 Fax (FOIP) gateway product and have a problem
with re-inviting and changing the SDP from RTP to T38.
Sending a fax works like this. The originator sets up a voice call
over SIP and RTP packets start going backwards and forwards with
FAX tones in them. The receiver of the FAX detects the tones and
instructs the originator via an INVITE to change to T38 UDPTL from
RTP.
The messages look a bit like the following:
ORIG -- INVITE (RTP/Voice) --> REC
ORIG <-- OK -- REC
ORIG -- FAX TONES over RTP --> REC
ORIG <-- INVITE (T.38 UDPTL) -- REC (NOTE - REVERSE DIRECTION)
ORIG -- OK --> REC
ORIG <-- T38 UDPTL --> REC
...
...
In this case I am the REC, receiver of the FAX.
Using the same handle I can't change the SDP information in the second
INVITE to T38 UDPTL. I use the SOATAG_USER_SDP_STR tag but whatever
I put in there is ignored for the old values.
So my question is how to override the SDP with new values?
Thanks and regards,
Matthew O'Connor
|
| Re: T.38 Fax Reinvite. |
  Italy |
2007-05-16 08:30:58 |
Matthew O Connor ha scritto:
> Using the same handle I can't change the SDP
information in the second
> INVITE to T38 UDPTL. I use the SOATAG_USER_SDP_STR tag
but whatever
> I put in there is ignored for the old values.
i do more or less the same thing (tried all combinations of
SOATAG_ ):
nua_invite(tech_pvt->nh,
SOATAG_USER_SDP_STR( buf_final ),
SOATAG_RTP_SORT(SOA_RTP_SORT_LOCAL),
RTP_SELECT(SOA_RTP_SELECT_COMMON),
TAG_END()
);
This is the SDP passed to nua_invite:
v=0
o=NFax 1638412668 1638412668 IN IP4 10.10.10.240
s=NFax
c=IN IP4 10.10.10.240
t=0 0
m=image 16384 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:9600
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxDatagram:400
This is what actually is sent out:
soa::local_sdp_str: "v=0
o=NFax 6547498866901436140 54553743616330857 IN IP4
10.10.10.240
s=NFax
c=IN IP4 10.10.10.240
t=0 0
a=sendrecv
m=audio 0 RTP/AVP 9
m=image 16384 UDPTL t38
a=T38FaxVersion:0
a=T38MaxBitRate:9600
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxDatagram:400
"
Please note:
m=audio 0 RTP/AVP 9
which shouldn't be there and there is NO way at the moment
to set it
correctly.
I believe we need a way to:
1) use the given RTP without any modification
2) alternatively a SOATAG_RTP_SELECT( SOA_RTP_SELECT_NONE ),
that does
not inserts RTP data
Any other solution ??
Max
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
| Re: T.38 Fax Reinvite. |
  Italy |
2007-05-16 06:32:53 |
Matthew O Connor ha scritto:
> Using the same handle I can't change the SDP
information in the second
> INVITE to T38 UDPTL. I use the SOATAG_USER_SDP_STR tag
but whatever
> I put in there is ignored for the old values.
i do more or less the same thing:
nua_invite(tech_pvt->nh,
SOATAG_USER_SDP_STR( buf_final ),
SOATAG_RTP_SORT(SOA_RTP_SORT_LOCAL),
SOATAG_RTP_SELECT(SOA_RTP_SELECT_COMMON),
TAG_END()
);
This is the SDP passed to nua_invite:
v=0
o=NFax 1638412668 1638412668 IN IP4 10.10.10.240
s=NFax
c=IN IP4 10.10.10.240
t=0 0
m=image 16384 udptl t38
a=T38FaxVersion:0
a=T38MaxBitRate:9600
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxDatagram:400
This is what actually is sent out:
soa::local_sdp_str: "v=0
o=NFax 6547498866901436140 54553743616330857 IN IP4
10.10.10.240
s=NFax
c=IN IP4 10.10.10.240
t=0 0
a=sendrecv
m=audio 0 RTP/AVP 9
m=image 16384 UDPTL t38
a=T38FaxVersion:0
a=T38MaxBitRate:9600
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxDatagram:400
"
Please note:
m=audio 0 RTP/AVP 9
which shouldn't be there and there is NO way at the moment
to set it
correctly.
I believe we need a way to:
1) use the given RTP without any modification
2) alternatively a SOATAG_RTP_SELECT( SOA_RTP_SELECT_NONE ),
that does
not inserts RTP data
Any other solution ??
Max
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
| Re: T.38 Fax Reinvite. |
  United States |
2007-05-22 03:57:33 |
What we need here is support for:
rfc 3264 8.3.3 Changing Media Types
I propose we add a tag that can be passed in on revinvite
that tells it
to not merge in previous m= lines... and to only add those
are in the
passed sdp user string. Is this approach correct?
Mike
> -----Original Message-----
> From: sofia-sip-devel-bounces lists.sourceforge.net
[mailto:sofia-sip-
> devel-bounces lists.sourceforge.net] On Behalf Of Max
CtRiX
> Sent: Wednesday, May 16, 2007 7:33 AM
> To: sofia-sip-devel lists.sourceforge.net
> Subject: Re: [Sofia-sip-devel] T.38 Fax Reinvite.
>
> Matthew O Connor ha scritto:
>
> > Using the same handle I can't change the SDP
information in the
second
> > INVITE to T38 UDPTL. I use the SOATAG_USER_SDP_STR
tag but whatever
> > I put in there is ignored for the old values.
>
> i do more or less the same thing:
>
> nua_invite(tech_pvt->nh,
> SOATAG_USER_SDP_STR( buf_final ),
> SOATAG_RTP_SORT(SOA_RTP_SORT_LOCAL),
> SOATAG_RTP_SELECT(SOA_RTP_SELECT_COMMON),
> TAG_END()
> );
>
>
> This is the SDP passed to nua_invite:
>
> v=0
> o=NFax 1638412668 1638412668 IN IP4 10.10.10.240
> s=NFax
> c=IN IP4 10.10.10.240
> t=0 0
> m=image 16384 udptl t38
> a=T38FaxVersion:0
> a=T38MaxBitRate:9600
> a=T38FaxFillBitRemoval:0
> a=T38FaxTranscodingMMR:0
> a=T38FaxTranscodingJBIG:0
> a=T38FaxRateManagement:transferredTCF
> a=T38FaxMaxDatagram:400
>
>
> This is what actually is sent out:
>
> soa::local_sdp_str: "v=0
> o=NFax 6547498866901436140 54553743616330857 IN IP4
10.10.10.240
> s=NFax
> c=IN IP4 10.10.10.240
> t=0 0
> a=sendrecv
> m=audio 0 RTP/AVP 9
> m=image 16384 UDPTL t38
> a=T38FaxVersion:0
> a=T38MaxBitRate:9600
> a=T38FaxFillBitRemoval:0
> a=T38FaxTranscodingMMR:0
> a=T38FaxTranscodingJBIG:0
> a=T38FaxRateManagement:transferredTCF
> a=T38FaxMaxDatagram:400
> "
>
> Please note:
> m=audio 0 RTP/AVP 9
> which shouldn't be there and there is NO way at the
moment to set it
> correctly.
>
>
> I believe we need a way to:
> 1) use the given RTP without any modification
> 2) alternatively a SOATAG_RTP_SELECT(
SOA_RTP_SELECT_NONE ), that does
> not inserts RTP data
>
> Any other solution ??
>
> Max
>
>
>
>
>
>
>
>
------------------------------------------------------------
------------
-
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2
express and take
> control of your XML. No limits. Just data. Click to get
it now.
> http://sourcefor
ge.net/powerbar/db2/
> _______________________________________________
> Sofia-sip-devel mailing list
> Sofia-sip-devel lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
| Re: T.38 Fax Reinvite. |

|
2007-05-25 09:25:18 |
2007/5/22, Michael Jerris <mike jerris.com>:
> What we need here is support for:
>
> rfc 3264 8.3.3 Changing Media Types
>
> I propose we add a tag that can be passed in on
revinvite that tells it
> to not merge in previous m= lines... and to only add
those are in the
> passed sdp user string. Is this approach correct?
That is probably what is needed. I had a peek on
soa_static.c, there
might be some problems because we do not keep old user sdp
around..
--
Pekka.Pessi mail at nokia.com
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
| Re: T.38 Fax Reinvite. |
  Italy |
2007-05-25 15:22:14 |
Pekka Pessi wrote:
> 2007/5/22, Michael Jerris <mike jerris.com>:
>> What we need here is support for:
>>
>> rfc 3264 8.3.3 Changing Media Types
>>
>> I propose we add a tag that can be passed in on
revinvite that tells it
>> to not merge in previous m= lines... and to only
add those are in the
>> passed sdp user string. Is this approach correct?
>
> That is probably what is needed. I had a peek on
soa_static.c, there
> might be some problems because we do not keep old user
sdp around..
>
I have a "very basic" patch which does part of the
job (attached).
This basically allowme to do something like:
nua_invite(tech_pvt->nh,
SOATAG_USER_SDP_FORCE( 1 ),
SOATAG_USER_SDP_STR( buf_final ),
TAG_END()
);
That sends a reinvite "automagically" using the
provided SDP.
There is another problem though.
Even if i am able to send a reinvite with the content i
like, i
absolutely cannot handle a received T38 reinvite.
some logs:invitge received...
recv 1208 bytes from udp/[10.10.10.251]:55283 at
20:06:41.130584:
------------------------------------------------------------
------------
INVITE sip:nfax 10.10.9.100:5061 SIP/2.0
Via: SIP/2.0/UDP
10.10.10.251:5060;branch=z9hG4bK1182323
From: <sip:9876 10.10.10.251>;tag=6813A01-988
To: <sip:800 10.10.9.100>;tag=B0tSSBH0NNp7a
Date: Fri, 25 May 2007 20:06:43 GMT
Call-ID: 46FAF162-A3211DC-81558F2F-219B19E2 10.10.10.251
Supported: 100rel,timer,replaces
Min-SE: 1800
Cisco-Guid: 1178450830-171053532-2169671471-563812834
User-Agent: Cisco-SIPGateway/IOS-12.x
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET,
REFER,
SUBSCRIBE, NOTIFY, INFO, UPDATE, REGISTER
CSeq: 102 INVITE
Max-Forwards: 50
Remote-Party-ID:
<sip:9876 10.10.10.251>;party=calling;screen=no;privacy=off
Timestamp: 1180123603
Contact: <sip:9876 10.10.10.251:5060>
Expires: 180
Allow-Events: telephone-event
Content-Type: application/sdp
Content-Length: 396
v=0
o=CiscoSystemsSIP-GW-UserAgent 6126 6474 IN IP4
10.10.10.251
s=SIP Call
c=IN IP4 10.10.10.251
t=0 0
m=image 18108 udptl t38
c=IN IP4 10.10.10.251
a=T38FaxVersion:0
a=T38MaxBitRate:14400
a=T38FaxFillBitRemoval:0
a=T38FaxTranscodingMMR:0
a=T38FaxTranscodingJBIG:0
a=T38FaxRateManagement:transferredTCF
a=T38FaxMaxBuffer:200
a=T38FaxMaxDatagram:72
a=T38FaxUdpEC:t38UDPRedundancy
------------------------------------------------------------
------------
nta: received INVITE sip:nfax 10.10.9.100:5061 SIP/2.0
(CSeq 102)
nta: canonizing sip:nfax 10.10.9.100:5061 with
contact
nta: INVITE (102) going to existing leg
nta: timer set to 200 ms
nua: nua_stack_process_request: entering
soa_init_offer_answer(static::0x8b04cf8) called
soa_set_remote_sdp(static::0x8b04cf8, (nil), 0x8b1a264, 396)
called
nua: nua_invite_server_respond: entering
send 514 bytes to udp/[10.10.10.251]:5060 at
20:06:41.131623:
This sends the reinvite with wrong SDP...
Still no hooks where my code can overcome sofia
decisions...
only later ...
------------------------------------------------------------
------------
nta: sent 200 OK for INVITE (102)
nua(0x8b049e0): event i_invite 200 OK
nua(0x8b049e0): ready call updated: completed received
offer
soa_get_remote_sdp(static::0x8b04cf8, [0xb6fecde8],
[0xb6fecde4],
[(nil)]) called
nua(0x8b049e0): event i_state 200 OK
nua: nua_event: entering
DEBUG - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
WARNING - Event callback - nua_i_invite: 1: 200 OK
DEBUG - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::tag_null: 0
DEBUG - *[ event handler: session name 0 ]*
WARNING - nua_i_invite with a session !!
WARNING - Is this a reinvite ?
nua: nua_event: entering
DEBUG - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
WARNING - Event callback - nua_i_state: 7: 200 OK
DEBUG - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
------------------------------------------------------------
------------
nua::callstate: 7
soa::active_audio: 3
nua::offer_recv: true
soa::remote_sdp: v=0
...
[correct received sdp]
...
DEBUG - _*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*
nua_callstate_completed (status 200)
it enters the completed state which is the very 1st hook
when i can
handle something.
of course, nua_respond here with the correct sdp, gives:
nua: nua_respond: entering
nua(0x8b049e0): signal r_respond
nua(0x8b049e0): recv r_respond
nua(0x8b049e0): signal r_respond 200 OK
nua(0x8b049e0): event i_error 500 Already Sent Final
Response
nua: nua_event: entering
because sofia has already answered
So, by now there is a patch that allows me to send whatever
i want.
But incoming reinvites are not manageable.
I have no clue on how to handle this.
Thanks to Matthew O Connor who gave me a similar patch...
i only embellished it.
Max
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
|
| Re: T.38 Fax Reinvite. |

|
2007-05-26 05:18:07 |
Hi,
On Fri, 25 May 2007, Pekka Pessi wrote:
>> I propose we add a tag that can be passed in on
revinvite that tells it
>> to not merge in previous m= lines... and to only
add those are in the
>
> That is probably what is needed. I had a peek on
soa_static.c, there
> might be some problems because we do not keep old user
sdp around..
hmm, what if the interface (nua_respond()) would require you
to pass a new
user-sdp, plus a boolean tag indicating that you wish to
modify media
session (including media types)?
--
links, my public keys, etc at http://eca.cx/kv
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
| Re: T.38 Fax Reinvite. |

|
2007-05-26 05:22:28 |
Hi,
On Fri, 25 May 2007, Massimo Cetra wrote:
> This basically allowme to do something like:
>
> nua_invite(tech_pvt->nh,
> SOATAG_USER_SDP_FORCE( 1 ),
> SOATAG_USER_SDP_STR( buf_final ),
> TAG_END()
> );
yes, so this is exactly what I was thinking about (see
previous mail).
> There is another problem though.
> Even if i am able to send a reinvite with the content i
like, i absolutely
> cannot handle a received T38 reinvite.
To disable automatic responses to incoming reinvites, pass
NUTAG_AUTOANSWER(0) to nua_invite/nua_respond(). See...
- http://sofia-sip.s
ourceforge.net/refdocs/nua/nua__tag_8h.html#8d92bee715bb6056
c93a180f4c8fc2b7
--
links, my public keys, etc at http://eca.cx/kv
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
| Re: T.38 Fax Reinvite. |

|
2007-05-27 14:37:15 |
2007/5/25, Massimo Cetra <ctrix+sofia navynet.it>:
> > That is probably what is needed. I had a peek on
soa_static.c, there
> > might be some problems because we do not keep old
user sdp around..
>
> I have a "very basic" patch which does part
of the job (attached).
Thanks for the patch. I got around and solved the problem
using
another approach with the SOATAG_ORDERED_USER(). It looks
like the
SOATAG_FORCE_USER_SDP() is useful in other cases, but it
lacks
implementation in generate offer case.
...
> There is another problem though.
> Even if i am able to send a reinvite with the content i
like, i
> absolutely cannot handle a received T38 reinvite.
As Kai said, you have to set NUTAG_AUTOANSWER(0) if you want
that your
application takes care of respond to re-INVITE requests.
--
Pekka.Pessi mail at nokia.com
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
| Re: T.38 Fax Reinvite. |
  Italy |
2007-05-27 16:11:11 |
Pekka Pessi wrote:
> 2007/5/25, Massimo Cetra <ctrix+sofia navynet.it>:
>> > That is probably what is needed. I had a peek
on soa_static.c, there
>> > might be some problems because we do not keep
old user sdp around..
>>
>> I have a "very basic" patch which does
part of the job (attached).
>
> Thanks for the patch. I got around and solved the
problem using
> another approach with the SOATAG_ORDERED_USER(). It
looks like the
> SOATAG_FORCE_USER_SDP() is useful in other cases, but
it lacks
> implementation in generate offer case.
>
yes, indeed you're right.
i don't know sofia internal too much so your work is
definitely better.
Anyway now reinvites are working nicely.
> ...
>> There is another problem though.
>> Even if i am able to send a reinvite with the
content i like, i
>> absolutely cannot handle a received T38 reinvite.
>
> As Kai said, you have to set NUTAG_AUTOANSWER(0) if you
want that your
> application takes care of respond to re-INVITE
requests.
>
thanks again.
I replied to Kai but i didn't realize that i didn't replied
to the list.
Now everything is OK.
Thanks so much, Pekka!
Massimo
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-s
ip-devel
|
|
[1-10]
|
|