[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