Tobias Lindgren wrote:
Hi Stefan,
I'm really new to SEMS (just started using it a couple of days ago). How
would I go about to force auth_b2b to send it's next request to the
source IP of the first reply as you describe?
if you update master or cherry-pick 47250b8, you can apply this:
diff --git a/core/plug-in/uac_auth/UACAuth.cpp
b/core/plug-in/uac_auth/UACAuth.cpp
index e9fb675..b3c5400 100644
--- a/core/plug-in/uac_auth/UACAuth.cpp
+++ b/core/plug-in/uac_auth/UACAuth.cpp
@@ -167,6 +167,15 @@ bool UACAuth::onSipReply(const AmSipReply& reply,
int old_dlg_status, const stri
// reset remote tag so remote party
// thinks its new dlg
dlg->remote_tag = "";
+
+ // update remote URI to resolved IP
+ size_t hpos = dlg->remote_uri.find("@");
+ if (hpos != string::npos && reply.remote_ip.length()) {
+ dlg->remote_uri = dlg->remote_uri.substr(0, hpos+1) +
+ reply.remote_ip + ":"+int2str(reply.remote_port);
+ DBG("updated remote URI to '%s'\n",
dlg->remote_uri.c_str());
+ }
+
}
// resend request
if (dlg->sendRequest(ri->second.method,
I'm not sure whether it should be there by default; actually I think
that its a special case for your (broken) server, which should not be
made the default. Or what do others think?
Stefan
Br,
/Tobias
> Date: Fri, 22 Oct 2010 10:41:13 +0200
> From: [email protected]
> To: [email protected]
> CC: [email protected]; [email protected]
> Subject: Re: [Sems] Regarding SEMS and SRV records
>
> Tobias Lindgren wrote:
> > Unfortainly it's the same result.
> if you don't get it working at all, also not with sending the request
> to the same proxy by setting remote-uri to the source IP of the reply,
> you can just try resending until it works...
>
> diff --git a/core/plug-in/uac_auth/UACAuth.cpp
> b/core/plug-in/uac_auth/UACAuth.cpp
> index 97d4911..a3ab84f 100644
> --- a/core/plug-in/uac_auth/UACAuth.cpp
> +++ b/core/plug-in/uac_auth/UACAuth.cpp
> @@ -105,7 +105,8 @@ UACAuth::UACAuth(AmSipDialog* dlg,
> UACAuthCred* cred)
> : dlg(dlg),
> credential(cred),
> - AmSessionEventHandler()
> + AmSessionEventHandler(),
> + retries(0)
> {
> }
>
> @@ -132,7 +133,7 @@ bool UACAuth::onSipReply(const AmSipReply& reply,
> AmSipDialog::Status old_dlg_st
>
> std::map<unsigned int, SIPRequestInfo >::iterator ri =
> sent_requests.find(reply.cseq);
> - if (ri!= sent_requests.end())
> + if (ri!= sent_requests.end() || ++retries < 10)
> {
> DBG(" UACAuth - processing with reply code %d \n", reply.code);
> // DBG("realm %s user %s pwd %s ----------------\n",
> diff --git a/core/plug-in/uac_auth/UACAuth.h
> b/core/plug-in/uac_auth/UACAuth.h
> index e6f07cf..863778d 100644
> --- a/core/plug-in/uac_auth/UACAuth.h
> +++ b/core/plug-in/uac_auth/UACAuth.h
> @@ -104,6 +104,7 @@ class UACAuth : public AmSessionEventHandler
>
> UACAuthCred* credential;
> AmSipDialog* dlg;
> + unsigned int retries;
>
> std::string find_attribute(const std::string& name, const
> std::string& header);
> bool parse_header(const std::string& auth_hdr,
> UACAuthDigestChallenge& challenge);
>
>
--
Stefan Sayer
VoIP Services Consulting and Development
Warschauer Str. 24
10243 Berlin
tel:+491621366449
sip:[email protected]
email/xmpp:[email protected]
_______________________________________________
Sems mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/sems