Re: [OpenSIPStack] Server implementation question
Brought to you by:
joegenbaclor
From: <jo...@op...> - 2007-11-23 10:28:06
|
Two possible reasons: 1. You are passing the address of SIPMessage msg to the SIPTransport=20 event which will be destroyed as soon as this function loses scope.=20 Try new SIPTransports::SIPTransportEvent( new SIPMessage(msg),=20 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=20 beginning of this file to force you new operator to use the correct=20 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(SIPMe= ssage msg) > { > SIPTransports::SIPTransportEvent *evt =3D new SIPTransports::SI= PTransportEvent(&msg, SIPTransports::SIPTransportEvent::UDPPacketArrival)= ; > > this->m_Stack->OnTransportEvent(evt); > //this->OnTransportEvent(evt); // class was derived from SIP::S= IPStack before.. > } > > This is the program's output (I used a register message from the SIP rf= c): > 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 (NIS= T) *** > 23:18:32.953 DBG: [CID=3D0x06e0] Message: REGISTER sip:registr= ar.biloxi.c > om SIP/2.0 > 23:18:32.953 DBG: [CID=3D0x06e0] Call-Id: 843817637684230@998s= dasdh09 > 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 RtlV= alidateHeap( 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 Ope= nSipStackTestConsoleApp.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 (SIPStac= k.cxx: 431 ... delete event; ) > > Any ideas? > > Thanks > > -----Original Message----- > From: ope...@li... [mailto:opensips= tac...@li...] On Behalf Of joegen@opensipstac= k.org > 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 t= o > 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: > =20 >> Joegen, >> >> Well the main thing is that the transport layer is partially existing = already 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 th= e switching and deciding if a call is valid or not,.. ourselves. >> Maybe I missed something and this functionality can be achieved otherw= ise (our application does have hardware to connect to analogue/digital ph= ones as well as does the switching and more or less the 'media server/pro= xy' too. Of course we want to use our switching and the media proxying - = since call 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 deve= loper 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 = derived class of SIP::SIPStack and having that process the event to find = out exactly what level of processing this class does already ... It would= really help me if there was some sort of documentation like an architect= ure diagram 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 SIPStack is even the right choice or if I rather should look at= SIPFSM, ... >> >> >> -----Original Message----- >> From: ope...@li... [mailto:opensip= sta...@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 ar= e >> afraid that the modification below will render your proprietary code >> violating the license, do not worry. The only thing covered by the MP= L >> 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: >> >> =20 >>> 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 tr= ansport >>> >>> 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: >>> >>> >>> =20 >>>> Hi, >>>> >>>> If I wanted to use a custom transport without changing opensipstackc= ode 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 th= at? (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 prob= lem of course, but I'd like to use a higher 'level' than just that which = also implements 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 * = Slowakei >>>> 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 >>>> >>>> >>>> >>>> >>>> >>>> >>>> =20 >>> ---------------------------------------------------------------------= ---- >>> 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 >>> >>> >>> >>> >>> =20 >> >> ----------------------------------------------------------------------= --- >> 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 >> >> >> >> >> =20 > > > > -----------------------------------------------------------------------= -- > 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 > > > > =20 |