It depends if you want your server to act as a proxy server or a Back 2 Back User Agent.
      - I the former case I suggest you to read in details RFC 3261 related chapters.
      - In the latter case things are quite different and not well detailed in any RFC (see following advice)

As a B2BUA, your server must have a Server leg in front of the initial UAC and a Client leg in front of  the final UAS.
Lets say that UA A tries to call UA B through your Server and that you want all the further requests and responses of the call to transit through it.
Here are the main points to remember:
    - You act as a Terminating UA for A
    - You act as an originating UA for B
    - Thus, responses to A requests (initiated by server or to be forwarded from B to A) sould contain at least the following headers (see RFC3261 for syntax):
             - Call ID : same as request from A
             - To : Same as request from A
             - From : Same as request from A
             - Contact : Set with the address of your server => so as to ensure further requests from A to forwarded to you (optional in 1xx status)
             - Via : Same as request from A
             - Cseq : Same as request from A
    - Requests to B (initiated by Server or to be forwarded from A to B):
             - Call ID : a new one (a new indepentent call is initiated)
             - To : Same as request from A
             - From : Same as request from A
             - Contact : Set with the address of your server => so as to ensure further requests from B to forwarded to you (optional in 1xx status)
             - Via : Your server address => so as to ensure responses from B to be forwarded to your server. (be carefull, there is no sense in copying all Via headers from A requests, since as a B2BUA you acts as if you were a the originator of the call - you are not a proxy).
             - Cseq : a new one related to the transaction in progess
             - Max-Forwards: 70
             - Body and related headers: depending on the service you want to provide (but usually the same as in A request)
    - Requests to A (BYE initiated by B or your server for example)
             - Call ID : leg A Call-ID
             - To : Equal to From header of request from A
             - From : Equal to To header of request from A
             - Contact : Set with the address of your server
             - Via : Your server address
             - Cseq : a new one related to the transaction in progress
             - Max-Forwards: 70
    - Thus, responses to B requests (responses to requests initiated by B : BYE for example):
             - Call ID : leg B Call-ID
             - To : Same as request from B
             - From : Same as request from B
             - Contact : Set with the address of your server
             - Via : Same as request from B
             - Cseq : Same as request from B
Good luck

Cédriic.

suhas wrote:
Hello Sir,
 
I am implementing a UDP relay Server which is in between the sip client and sip server, Sip client is thinking that i am a sip server and sip server will think that i am a sip client, here,sip client send a sip sequest to my udp server, and my udp server sends it to sip server changing the address, my udp server is written in java,
but i dont know what change i wud do so that the message from client to sip server and from sip server to sip client so that the communication wud be established thru this udp server,
can anybody help me!!
thanks
suhas(a new sip baby)
 

_______________________________________________ Sip-implementors mailing list [EMAIL PROTECTED] http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors


--
Identity Cédric BARRET
IN & GSM Infrastructure Department
FERMA, ZIRST, 31 Chemin du Vieux Chene
38240 MEYLAN, FRANCE

Tel : +33 (0)4.76.61.79.00
Fax : +33 (0)4.76.61.79.59
Mail: [EMAIL PROTECTED]
WWW : http://www.ferma.fr
_______________________________________________
Sip-implementors mailing list
[EMAIL PROTECTED]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to