[reSIProcate] Register crash after the third time login?

Dien Ba Quang dienbaquang at gmail.com
Mon Apr 9 11:51:40 CDT 2007


Hi Scott,
I have changed the code in function Register:

        SharedPtr<UserProfile> tmp = SharedPtr<UserProfile>(new
UserProfile());
        /////
        NameAddr naFrom(from.c_str());
        //clientDum->getMasterProfile()->setDefaultFrom(naFrom);
        //clientDum->getMasterProfile()->setDigestCredential(realm.c_str(),
user.c_str(), passwd.c_str());
        tmp->setDefaultFrom(naFrom);
        tmp->setDigestCredential(realm.c_str(), user.c_str(), passwd.c_str
());

        SharedPtr<SipMessage> regMessage =
clientDum->makeRegistration(naFrom,tmp);

        clientDum->send( regMessage );
//        delete tmp;

But it still have the same problems. Could you give me any hints to fix
that?

DBQ.

On 4/9/07, Scott Godin <slgodin at icescape.com> wrote:
>
>  You should not be changing the MasterProfile at runtime.  You should
> create a new UserProfile and pass this to the makeRegistration function.
>
>
>
> *From:* resiprocate-devel-bounces at list.resiprocate.org [mailto:
> resiprocate-devel-bounces at list.resiprocate.org] *On Behalf Of *Dien Ba
> Quang
> *Sent:* Monday, April 09, 2007 11:14 AM
> *To:* resiprocate-devel at list.resiprocate.org
> *Subject:* [reSIProcate] Register crash after the third time login?
>
>
>
> Hi all,
>
> I'm writing a soft phone using resiprocate as a sip stack. I have a
> problem with register:
> If i login three times in a row resiprocate crashes on the third time at
> line 775 in dialogset.cxx
> *
> AppDialog* appDialog = mAppDialogSet->createAppDialog(msg);
> *
> Do you have any solution for that issue?
> Thank you very much.
>
> DBQ.
> PS: Bellow is my login function( before calling Register function I have
> called a function called InitResiprocate to initialize sipstack, sipdum,
> ...):
>
> *void Csipmmc::Register(char* struser, char* strpasswd, char* strrealm)**
> {
>     try {
>         bool first = true;
>         string from(struser);
>         if (from.find("sip:",0) != 0)
>             from.insert(0, "sip:");
>         Data tmp_data(from);* *
>         Uri tmp_uri(tmp_data);
>         uac.myUri = tmp_uri;
>
>         string user(str_get_username(struser));
>         string passwd(strpasswd);* *
>         string realm(strrealm);
>
>         // sip logic
>         clientDum->getMasterProfile()->setDefaultRegistrationTime(70);
>
>
>         /////
>         NameAddr naFrom(from.c_str());
>         clientDum->getMasterProfile()->setDefaultFrom(naFrom);
>         clientDum->getMasterProfile()->setDigestCredential( realm.c_str(),
> user.c_str(), passwd.c_str());
>
>         SharedPtr<SipMessage> regMessage =
> clientDum->makeRegistration(naFrom);
>
>         clientDum->send( regMessage );
>     }
>     catch (BaseException& e) {}*
>
> *int Csipmmc::InitResiprocate(char* outboundProxy, int port) **
> {
>     clientDum = new DialogUsageManager(clientStack);
>     stackThread = new StackThread(clientStack);
>     SharedPtr<MasterProfile> profile(new MasterProfile);   * *
>     profile->addSupportedMethod(REFER);
>     profile->addSupportedMethod(NOTIFY);
>     profile->addSupportedMethod(SUBSCRIBE);
>     profile->addSupportedMethod(MESSAGE);
>
>     profile->validateAcceptEnabled() = false;
>     profile->validateContentEnabled() = false;
>
>     profile->addSupportedMimeType(NOTIFY, Pidf::getStaticType());
>     profile->addSupportedMimeType(NOTIFY,Mime("application",
> "simple-message-summary"));
>     profile->addSupportedMimeType(MESSAGE, Mime("text", "plain"));
>     Uri outboundproxy;* *
>     int proxy_port;
>     if (outboundProxy != NULL)
>     {
>         string input_sipaddress(outboundProxy);
>         outboundproxy.host() =
> Data(str_get_outboundproxy(input_sipaddress, proxy_port));
>         outboundproxy.port() = proxy_port;
>         profile->setOutboundProxy(outboundproxy);
>     }
>
>     clientDum->addTransport(UDP, port);
>     clientDum->setMasterProfile(profile);
>
>     auto_ptr<ClientAuthManager> clientAuth(new ClientAuthManager());
>     clientDum->setClientAuthManager(clientAuth);
>     clientDum->setClientRegistrationHandler(&uac);
>     clientDum->addClientSubscriptionHandler("presence",&uac);
>     clientDum->addServerSubscriptionHandler("presence",&uac);
>     clientDum->setInviteSessionHandler(&uac);
>     clientDum->addOutOfDialogHandler(OPTIONS, &uac);
>     clientDum->setClientPagerMessageHandler(&uac);
>     clientDum->setServerPagerMessageHandler(&uac);
>
>     dumThread= 0;
>     dumThread = new DumThread(*clientDum);
>     stackThread->run();
>     if (dumThread)
>     {
>        dumThread->run();
>     }* *
>     return 0;
> }*
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20070409/fa95b344/attachment.htm>


More information about the resiprocate-devel mailing list