Client: use the account parameter when making an outgoing call before trying to use the caller.

git-svn-id: http://voip.null.ro/svn/yate@1982 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
marian 2008-05-13 12:37:40 +00:00
parent 81bb13e162
commit b8f67148f3
1 changed files with 13 additions and 3 deletions

View File

@ -2169,10 +2169,18 @@ bool YJGDriver::msgExecute(Message& msg, String& dest)
setComponentCall(caller,called,msg.getValue("caller"),dest,available,error);
break;
}
caller.set(msg.getValue("caller"));
called.set(dest);
// Check if a stream exists. Try to get a resource for caller and/or called
JBStream* stream = s_jabber->getStream(&caller,false);
JBStream* stream = 0;
NamedString* account = msg.getParam("account");
if (account)
stream = s_jabber->findStream(*account);
if (stream)
caller.set(stream->local().node(),stream->local().domain(),
stream->local().resource());
else {
caller.set(msg.getValue("caller"));
stream = s_jabber->getStream(&caller,false);
}
if (!(stream && stream->type() == JBEngine::Client)) {
error = "No stream";
errStr = "noconn";
@ -2184,6 +2192,7 @@ bool YJGDriver::msgExecute(Message& msg, String& dest)
stream->local().resource().c_str(),caller.c_str());
caller.resource(stream->local().resource());
}
called.set(dest);
if (!called.resource()) {
JBClientStream* client = static_cast<JBClientStream*>(stream);
XMPPUser* user = client->getRemote(called);
@ -2198,6 +2207,7 @@ bool YJGDriver::msgExecute(Message& msg, String& dest)
}
if (!(caller.isFull() && called.isFull()))
error << "Incomplete caller=" << caller << " or called=" << called;
TelEngine::destruct(stream);
break;
}
if (error) {