Re: [OpenSIPStack] Server implementation question
Brought to you by:
joegenbaclor
From: Thomas R. <tho...@it...> - 2007-11-23 13:16:06
|
Or is it SIP::SIPStack that I need to use for this (I know you mentioned it= before, but I didn't mention all the things we need to do before ;)) Also = preferably we want to leave the timer handling (registration expiration, me= ssage timeout/resend, ..) to the stack.. -----Original Message----- From: ope...@li... [mailto:opensipstack= -de...@li...] On Behalf Of Thomas Raschbacher Sent: Freitag, 23. November 2007 13:50 To: ope...@li... Subject: Re: [OpenSIPStack] Server implementation question So.. if I want to use a 'higher' / transactional interface would I be best = off using SIPTransactions or rather SIPFSM::InviteServerTransaction, SIPFSM= ::NonInviteServerTransaction and SIPFSM::InviteClientTransaction, SIPFSM::N= onInviteClientTransaction ? Due to the fact that we want to be able to set nearly all sip headers (and = some of sdp too) from our application we are not sure yet if we are even go= ing to use OpenSBC or just OpenSIPStack directly to minimize the overhead o= f 2 applications communicating with each other. Also we want to be able to = act as a proxy and registrar (just like OpenSBC can do if I understand that= right) but possibly also as a client when connecting to another server. What would be the best way to do this in your opinion? -----Original Message----- From: ope...@li... [mailto:opensipstack= -de...@li...] On Behalf Of jo...@op... Sent: Freitag, 23. November 2007 12:57 To: ope...@li... Subject: Re: [OpenSIPStack] Server implementation question Thomas Raschbacher wrote: > Thanks. The 1st one solved my problem. > > So .. if I wanted to use a custom authentication class I assume I'd have = to inherit from B2BAuthInterface right? Also how would I then use that? > Meaning I still want opensipstack to handle the authentification when it = gets a REGISTER (with www-auth,..), but want to get the user-credentials fr= om our system instead of storing them in a list like OpenSBC does.. > You are looking at the right place. For a guy asking for documentations, you're doing quire well. > To clarify I want opensipstack to handle the sip requests, but need it to= call methods in our application to get information about users, wether to = allow a call or not, ... (also want to always route RTP through the applica= tion so that the conversation can be recorded if needed.) > If you want to not let opensbc handle RTP, you may need to override methods in B2BMediaInterface. You may simply comment out the entire code blocks of TranslateSDPOffer and TranslateSDPAnswer and just return TRUE in both places. > /me continues evaluation of opensipstack ;) > > -----Original Message----- > From: ope...@li... [mailto:opensipsta= ck-...@li...] On Behalf Of joegen@opensipstack.or= g > Sent: Freitag, 23. November 2007 11:28 > To: ope...@li... > Subject: Re: [OpenSIPStack] Server implementation question > > Two possible reasons: > > 1. You are passing the address of SIPMessage msg to the SIPTransport > event which will be destroyed as soon as this function loses scope. > Try > > new SIPTransports::SIPTransportEvent( new SIPMessage(msg), > SIPTransports::SIPTransportEvent::UDPPacketArrival); > > instead. SIPTransportEvent deletes this pointer in its destructor. > > 2. If this is a debug build, OpenSIPStack might be using PMemoryHeap to > store NEWly create Objects. Try putting a "#define new PNEW" in the > beginning of this file to force you new operator to use the correct > implementation. > > From what I see, the culprit is item 1. > > Thomas Raschbacher wrote: > >> Hi. >> >> Please have a look at the following code: >> >> class OpenSipStack_StackTest >> { >> public: >> void TransportEventTest(SIPMessage msg); >> OpenSipStack_StackTest() >> { >> m_Stack =3D new SIP::SIPStack(); >> } >> private: >> SIP::SIPStack * m_Stack; >> } >> >> void OpenSipStackTest::OpenSipStack_StackTest::TransportEventTest(SIPMes= sage msg) >> { >> SIPTransports::SIPTransportEvent *evt =3D new SIPTransports::SIP= TransportEvent(&msg, SIPTransports::SIPTransportEvent::UDPPacketArrival); >> >> this->m_Stack->OnTransportEvent(evt); >> //this->OnTransportEvent(evt); // class was derived from SIP::SI= PStack before.. >> } >> >> This is the program's output (I used a register message from the SIP rfc= ): >> 23:18:32.858 INF: [CID=3D0x0000] SIP Stack CREATED >> 23:18:32.943 DBG: [CID=3D0x06e0] >> 23:18:32.943 DBG: [CID=3D0x06e0] RECEIVE: REQ: REGISTER (1826) >> 23:18:32.943 DBG: [CID=3D0x06e0] FROM: sip:bo...@bi... >> 23:18:32.943 DBG: [CID=3D0x06e0] TO: sip:bo...@bi... >> 23:18:32.943 DBG: [CID=3D0x06e0] XOR: FALSE >> 23:18:32.943 DBG: [CID=3D0x06e0] SRC: PORT: >> 23:18:32.943 DBG: [CID=3D0x06e0] >> 23:18:32.953 DBG: [CID=3D0x06e0] >> 23:18:32.953 DBG: [CID=3D0x06e0] *** CREATING TRANSACTION (NIST= ) *** >> 23:18:32.953 DBG: [CID=3D0x06e0] Message: REGISTER sip:registra= r.biloxi.c >> om SIP/2.0 >> 23:18:32.953 DBG: [CID=3D0x06e0] Call-Id: 843817637684230@998sd= asdh09 >> 23:18:32.953 DBG: [CID=3D0x06e0] >> 23:18:32.962 DTL: [CID=3D0x06e0] NIST(83912963) *** CREATED **= * - NIST|8 >> 43817637684230@998sdasdh09|z9hG4bKnashds7|REGISTER >> >> At that point I get it triggering a breakpoint - heap related >> HEAP[OpenSipStackTestConsoleApp.exe]: Invalid Address specified to RtlVa= lidateHeap( 00350000, 0012FC94 ) >> Windows has triggered a breakpoint in OpenSipStackTestConsoleApp.exe. >> >> This may be due to a corruption of the heap, and indicates a bug in Open= SipStackTestConsoleApp.exe or any of the DLLs it has loaded. >> >> The output window may have more diagnostic information >> >> (that is all from the output window..) >> >> This seems to happen at the end of the OnTransportEvent method (SIPStack= .cxx: 431 ... delete event; ) >> >> Any ideas? >> >> Thanks >> >> -----Original Message----- >> From: ope...@li... [mailto:opensipst= ack...@li...] On Behalf Of joegen@opensipstack.o= rg >> Sent: Freitag, 23. November 2007 10:27 >> To: ope...@li... >> Subject: Re: [OpenSIPStack] Server implementation question >> >> SIP::SIPStack is probably the best place for you then. You just need to >> create your own SIPTransportEvent and feed it to OnTransportEvent() >> virtual method. I agree that there is not much to work with in terms >> of documentation and I assure you that this is not a permanent >> condition. It is just that all the hands working on the project are >> currently busy with actual coding of functionalities. For now, you're >> best bet is to ask questions and we can answer it to the best of our >> abilities. I also have plans of creating a near C API wrapper for the >> stack to make implementors and integrators life easier. One thing >> that might be a bit of a road block for you is that OpenSIPStack design >> is not modular and that almost all components like the Transport, FSM >> and the core are intertwined. Thus, if you need to use third party >> replace ments, you will need to subclass the right component. >> >> >> Thomas Raschbacher wrote: >> >> >>> Joegen, >>> >>> Well the main thing is that the transport layer is partially existing a= lready and needs to be implemented in some other part of the application I = think (also we need TCP and TLS too). Problem is that we need to do the swi= tching and deciding if a call is valid or not,.. ourselves. >>> Maybe I missed something and this functionality can be achieved otherwi= se (our application does have hardware to connect to analogue/digital phone= s as well as does the switching and more or less the 'media server/proxy' t= oo. Of course we want to use our switching and the media proxying - since c= all recording is a required features.) >>> >>> If there is an easier way to achieve this please let me know as it is a= bit difficult to find those things out as I couldn't find a lot of develop= er documentation / the code isn't commented very much explaining which clas= s exactly does what. >>> >>> Regards, >>> P.S.: I'm currently playing around with sending Transport events to a d= erived class of SIP::SIPStack and having that process the event to find out= exactly what level of processing this class does already ... It would real= ly help me if there was some sort of documentation like an architecture dia= gram or some short description of which class would be best to use if I wan= t some basic replies and timeouts already implemented, as I don't know if S= IPStack is even the right choice or if I rather should look at SIPFSM, ... >>> >>> >>> -----Original Message----- >>> From: ope...@li... [mailto:opensips= tac...@li...] On Behalf Of Joegen E. Baclor >>> Sent: Freitag, 23. November 2007 09:39 >>> To: jo...@op...; ope...@li... >>> Subject: Re: [OpenSIPStack] Server implementation question >>> >>> Thomas, >>> >>> BTW, OpenSIPStack default license is MPL 1.1 not GPL/LGPL. If you are >>> afraid that the modification below will render your proprietary code >>> violating the license, do not worry. The only thing covered by the MPL >>> is the modification done to OpenSIPStack alone and not your entire >>> application. Thus, If you indeed deploy your own transport, then the >>> code block below is the only thing you are obliged to make open or >>> contribute back to OpenSIPStack. Can you share why you want to use >>> another transport though? >>> >>> Joegen >>> >>> jo...@op... wrote: >>> >>> >>> >>>> Hi Thomas, >>>> >>>> You need to create your custom transports as descendant of >>>> SIPTransport. You would then need to override the following Virtual >>>> Method in SIPTransportManager to return an instance fo your custom tra= nsport >>>> >>>> SIPTransport * SIPTransportManager::OnCreateTransport( >>>> const char * userAgentName, >>>> SIPTransport::Protocol protocol >>>> ) >>>> { >>>> if( protocol =3D=3D SIPTransport::UDP ) >>>> return new SIPUDPTransport( userAgentName, this ); >>>> else if( protocol =3D=3D SIPTransport::TCP ) >>>> return new SIPTCPTransport( userAgentName, this ); >>>> >>>> return NULL; >>>> } >>>> >>>> >>>> Hope that helps. >>>> >>>> Joegen >>>> >>>> Thomas Raschbacher wrote: >>>> >>>> >>>> >>>> >>>>> Hi, >>>>> >>>>> If I wanted to use a custom transport without changing opensipstackco= de itself (ie it being in a different library and just sending events to th= e stack when it receives / sends/sent messages) how would I best do that? (= Need to use existing transports in non (L)GPL application, but want to use = as much of opensipstack as possible - the parser itself is no problem of co= urse, but I'd like to use a higher 'level' than just that which also implem= ents timers and responses like TRYING, ...) >>>>> >>>>> Regards, >>>>> >>>>> Mit freundlichen Gr=FC=DFen >>>>> Thomas Raschbacher >>>>> ____________________________________________ >>>>> itCampus Technology GmbH >>>>> =D6sterreich * Deutschland * Italien >>>>> Wehlistra=DFe 27b >>>>> 1200 Wien >>>>> tho...@it... >>>>> Tel: +43 (1) 33418557-58 >>>>> Fax: +43 (1) 33418557-958 >>>>> http://www.itctec.com >>>>> UID: ATU 6339 0618 >>>>> Firmenbuchnr: FN292598t, Handelsgericht Wien >>>>> Gesch=E4ftsf=FChrer: Andreas G=FCnser, Andreas Lassmann >>>>> Joint Venture von itCampus und MEC >>>>> >>>>> itCampus Gruppe >>>>> Deutschland * Gro=DFbritannien * Italien * =D6sterreich * Schweiz * S= lowakei >>>>> http://www.itcampus.eu >>>>> >>>>> >>>>> ---------------------------------------------------------------------= ---- >>>>> This SF.net email is sponsored by: Microsoft >>>>> Defy all challenges. Microsoft(R) Visual Studio 2005. >>>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >>>>> _______________________________________________ >>>>> opensipstack-devel mailing list >>>>> ope...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/opensipstack-devel >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>> ----------------------------------------------------------------------= --- >>>> This SF.net email is sponsored by: Microsoft >>>> Defy all challenges. Microsoft(R) Visual Studio 2005. >>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >>>> _______________________________________________ >>>> opensipstack-devel mailing list >>>> ope...@li... >>>> https://lists.sourceforge.net/lists/listinfo/opensipstack-devel >>>> >>>> >>>> >>>> >>>> >>>> >>> -----------------------------------------------------------------------= -- >>> This SF.net email is sponsored by: Microsoft >>> Defy all challenges. Microsoft(R) Visual Studio 2005. >>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >>> _______________________________________________ >>> opensipstack-devel mailing list >>> ope...@li... >>> https://lists.sourceforge.net/lists/listinfo/opensipstack-devel >>> >>> -----------------------------------------------------------------------= -- >>> This SF.net email is sponsored by: Microsoft >>> Defy all challenges. Microsoft(R) Visual Studio 2005. >>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >>> _______________________________________________ >>> opensipstack-devel mailing list >>> ope...@li... >>> https://lists.sourceforge.net/lists/listinfo/opensipstack-devel >>> >>> >>> >>> >>> >>> >> >> ------------------------------------------------------------------------= - >> This SF.net email is sponsored by: Microsoft >> Defy all challenges. Microsoft(R) Visual Studio 2005. >> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >> _______________________________________________ >> opensipstack-devel mailing list >> ope...@li... >> https://lists.sourceforge.net/lists/listinfo/opensipstack-devel >> >> ------------------------------------------------------------------------= - >> This SF.net email is sponsored by: Microsoft >> Defy all challenges. Microsoft(R) Visual Studio 2005. >> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >> _______________________________________________ >> opensipstack-devel mailing list >> ope...@li... >> https://lists.sourceforge.net/lists/listinfo/opensipstack-devel >> >> >> >> >> > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2005. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > opensipstack-devel mailing list > ope...@li... > https://lists.sourceforge.net/lists/listinfo/opensipstack-devel > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2005. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > opensipstack-devel mailing list > ope...@li... > https://lists.sourceforge.net/lists/listinfo/opensipstack-devel > > > > ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ opensipstack-devel mailing list ope...@li... https://lists.sourceforge.net/lists/listinfo/opensipstack-devel ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ opensipstack-devel mailing list ope...@li... https://lists.sourceforge.net/lists/listinfo/opensipstack-devel |