Re: [OpenSIPStack] Server implementation question
Brought to you by:
joegenbaclor
From: Thomas R. <tho...@it...> - 2007-11-23 11:14:30
|
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 ge= ts a REGISTER (with www-auth,..), but want to get the user-credentials from= our system instead of storing them in a list like OpenSBC does. To clarify I want opensipstack to handle the sip requests, but need it to c= all methods in our application to get information about users, wether to al= low a call or not, ... (also want to always route RTP through the applicati= on so that the conversation can be recorded if needed.) /me continues evaluation of opensipstack ;) -----Original Message----- From: ope...@li... [mailto:opensipstack= -de...@li...] On Behalf Of jo...@op... 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(SIPMess= age msg) > { > SIPTransports::SIPTransportEvent *evt =3D new SIPTransports::SIPT= ransportEvent(&msg, SIPTransports::SIPTransportEvent::UDPPacketArrival); > > this->m_Stack->OnTransportEvent(evt); > //this->OnTransportEvent(evt); // class was derived from SIP::SIP= Stack 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= .biloxi.c > om SIP/2.0 > 23:18:32.953 DBG: [CID=3D0x06e0] Call-Id: 843817637684230@998sda= sdh09 > 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 RtlVal= idateHeap( 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 OpenS= ipStackTestConsoleApp.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:opensipsta= ck-...@li...] On Behalf Of joegen@opensipstack.or= g > 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 al= ready and needs to be implemented in some other part of the application I t= hink (also we need TCP and TLS too). Problem is that we need to do the swit= ching and deciding if a call is valid or not,.. ourselves. >> Maybe I missed something and this functionality can be achieved otherwis= e (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' to= o. Of course we want to use our switching and the media proxying - since ca= ll 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 develope= r 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 de= rived class of SIP::SIPStack and having that process the event to find out = exactly what level of processing this class does already ... It would reall= y help me if there was some sort of documentation like an architecture diag= ram 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 SI= PStack is even the right choice or if I rather should look at SIPFSM, ... >> >> >> -----Original Message----- >> From: ope...@li... [mailto:opensipst= ack...@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 tran= sport >>> >>> 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 opensipstackcod= e 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? (N= eed to use existing transports in non (L)GPL application, but want to use a= s much of opensipstack as possible - the parser itself is no problem of cou= rse, but I'd like to use a higher 'level' than just that which also impleme= nts 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 * Sl= owakei >>>> 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 |