reSIProcate/stack  9694
Functions
testSipMessageMemory.cxx File Reference
#include "resip/stack/SipMessage.hxx"
#include "resip/stack/Uri.hxx"
#include "resip/stack/test/TestSupport.hxx"
#include <iostream>
#include <memory>
Include dependency graph for testSipMessageMemory.cxx:

Go to the source code of this file.

Functions

int main ()

Function Documentation

int main ( void  )

Definition at line 12 of file testSipMessageMemory.cxx.

References resip::TestSupport::makeMessage(), resipCerr, and resipCout.

{
   {
      const char *txt1 = "REGISTER sip:registrar.biloxi.com SIP/2.0\r\nVia: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7\r\nMax-Forwards: 70\r\nTo: Bob <sip:bob@biloxi.com>\r\nFrom: Bob <sip:bob@biloxi.com>;tag=456248\r\nCall-ID: 843817637684230@998sdasdh09\r\nCSeq: 1826 REGISTER\r\nContact: <sip:bob@192.0.2.4>\r\nExpires: 7200\r\nContent-Length: 0\r\n\r\n";

      auto_ptr<SipMessage> message1(TestSupport::makeMessage(Data(txt1)));
      auto_ptr<SipMessage> message2(TestSupport::makeMessage(Data(txt1)));

      NameAddr local;
      
      local = message1->header(h_From);
      local = message2->header(h_From);
   }

   {
      resipCerr << "Testing raw header transfer" << endl;
      
      const char *txt1 = "REGISTER sip:registrar.biloxi.com SIP/2.0\r\nVia: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7\r\nMax-Forwards: 70\r\nTo: Bob <sip:bob@biloxi.com>\r\nFrom: Bob <sip:bob@biloxi.com>;tag=456248\r\nCall-ID: 843817637684230@998sdasdh09\r\nCSeq: 1826 REGISTER\r\nContact: <sip:bob@192.0.2.4>\r\nExpires: 7200\r\nContent-Length: 0\r\n\r\n";

      const char *txt2 = "REGISTER sip:registrar.ixolib.com SIP/2.0\r\nVia: SIP/2.0/UDP qoqspc.ixolib.com:5060;branch=2222222222\r\nMax-Forwards: 70\r\nTo: Qoq <sip:qoq@ixolib.com>\r\nFrom: Qoq <sip:qoq@ixolib.com>;tag=456248\r\nCall-ID: 111111111111111\r\nCSeq: 6281 REGISTER\r\nContact: <sip:qoq@192.0.2.4>\r\nExpires: 7200\r\nContent-Length: 0\r\n\r\n";

      auto_ptr<SipMessage> message1(TestSupport::makeMessage(Data(txt1)));
      auto_ptr<SipMessage> message2(TestSupport::makeMessage(Data(txt2)));
      
      assert(message1->getRawHeader(Headers::CSeq)->getParserContainer() == 0);
      assert(message2->getRawHeader(Headers::CSeq)->getParserContainer() == 0);

      message1->setRawHeader(message2->getRawHeader(Headers::CSeq), Headers::CSeq);
      message1->encode(resipCerr) << endl;
      assert(message1->header(h_CSeq).sequence() == 6281);
   }

   {
      resipCerr << "Testing raw header transfer post parse" << endl;
      
      const char *txt1 = "REGISTER sip:registrar.biloxi.com SIP/2.0\r\nVia: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7\r\nMax-Forwards: 70\r\nTo: Bob <sip:bob@biloxi.com>\r\nFrom: Bob <sip:bob@biloxi.com>;tag=456248\r\nCall-ID: 843817637684230@998sdasdh09\r\nCSeq: 1826 REGISTER\r\nContact: <sip:bob@192.0.2.4>\r\nExpires: 7200\r\nContent-Length: 0\r\n\r\n";

      const char *txt2 = "REGISTER sip:registrar.ixolib.com SIP/2.0\r\nVia: SIP/2.0/UDP qoqspc.ixolib.com:5060;branch=2222222222\r\nMax-Forwards: 70\r\nTo: Qoq <sip:qoq@ixolib.com>\r\nFrom: Qoq <sip:qoq@ixolib.com>;tag=456248\r\nCall-ID: 111111111111111\r\nCSeq: 6281 REGISTER\r\nContact: <sip:qoq@192.0.2.4>\r\nExpires: 7200\r\nContent-Length: 0\r\n\r\n";


      auto_ptr<SipMessage> message1(TestSupport::makeMessage(Data(txt1)));
      auto_ptr<SipMessage> message2(TestSupport::makeMessage(Data(txt2)));

      assert(message1->getRawHeader(Headers::CSeq)->getParserContainer() == 0);
      assert(message2->getRawHeader(Headers::CSeq)->getParserContainer() == 0);

      // causes parse
      assert(message2->header(h_CSeq).sequence() == 6281);
      // should have a parsed header
      assert(message2->getRawHeader(Headers::CSeq)->getParserContainer());
      
      // should still work, but copies
      message1->setRawHeader(message2->getRawHeader(Headers::CSeq), Headers::CSeq);
      message1->encode(resipCerr) << endl;
      assert(message1->header(h_CSeq).sequence() == 6281);

      // should have a parsed header
      assert(message1->getRawHeader(Headers::CSeq)->getParserContainer());
   }

   resipCout << "All OK" << endl;
   return 0;
}

Here is the call graph for this function: