Re: [OpenSIPStack] Server implementation question
Brought to you by:
joegenbaclor
From: Thomas R. <tho...@it...> - 2007-11-23 09:40:31
|
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(SIPMessag= e msg) { SIPTransports::SIPTransportEvent *evt =3D new SIPTransports::SIPTra= nsportEvent(&msg, SIPTransports::SIPTransportEvent::UDPPacketArrival); this->m_Stack->OnTransportEvent(evt); //this->OnTransportEvent(evt); // class was derived from SIP::SIPSt= ack 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:registrar.b= iloxi.c om SIP/2.0 23:18:32.953 DBG: [CID=3D0x06e0] Call-Id: 843817637684230@998sdasd= h09 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 RtlValid= ateHeap( 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 OpenSip= StackTestConsoleApp.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.cx= x: 431 ... delete event; ) Any ideas? Thanks -----Original Message----- From: ope...@li... [mailto:opensipstack= -de...@li...] On Behalf Of jo...@op... 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 alr= eady and needs to be implemented in some other part of the application I th= ink (also we need TCP and TLS too). Problem is that we need to do the switc= hing and deciding if a call is valid or not,.. ourselves. > Maybe I missed something and this functionality can be achieved otherwise= (our application does have hardware to connect to analogue/digital phones = as well as does the switching and more or less the 'media server/proxy' too= . Of course we want to use our switching and the media proxying - since cal= l recording is a required features.) > > If there is an easier way to achieve this please let me know as it is a b= it difficult to find those things out as I couldn't find a lot of developer= documentation / the code isn't commented very much explaining which class = exactly does what. > > Regards, > P.S.: I'm currently playing around with sending Transport events to a der= ived class of SIP::SIPStack and having that process the event to find out e= xactly what level of processing this class does already ... It would really= help me if there was some sort of documentation like an architecture diagr= am or some short description of which class would be best to use if I want = some basic replies and timeouts already implemented, as I don't know if SIP= Stack is even the right choice or if I rather should look at SIPFSM, ... > > > -----Original Message----- > From: ope...@li... [mailto:opensipsta= ck-...@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 trans= port >> >> 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 opensipstackcode= itself (ie it being in a different library and just sending events to the = stack when it receives / sends/sent messages) how would I best do that? (Ne= ed 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 cour= se, but I'd like to use a higher 'level' than just that which also implemen= ts 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 * Slo= wakei >>> 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 |