Check register interval before authentication: avoid useless auth for interval too brief.

git-svn-id: http://voip.null.ro/svn/yate@6195 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
marian 2017-03-29 08:18:06 +00:00
parent c06f4652c7
commit b3f63d8479
1 changed files with 17 additions and 16 deletions

View File

@ -5369,6 +5369,23 @@ void YateSIPEndPoint::regRun(const SIPMessage* message, SIPTransaction* t)
return;
}
String tmp(message->getHeader("Expires"));
if (tmp.null())
tmp = hl->getParam("expires");
int expires = tmp.toInteger(-1);
if (expires < 0)
expires = s_expires_def;
if (expires > s_expires_max)
expires = s_expires_max;
if (expires && (expires < s_expires_min) && (*hl != "*")) {
tmp = s_expires_min;
SIPMessage* r = new SIPMessage(t->initialMessage(),423);
r->addHeader("Min-Expires",tmp);
t->setResponse(r);
r->deref();
return;
}
URI addr(*hl);
String num = addr.getUser();
if (!num) {
@ -5382,14 +5399,6 @@ void YateSIPEndPoint::regRun(const SIPMessage* message, SIPTransaction* t)
msg.addParam("number",num,false);
msg.addParam("sip_uri",t->getURI());
msg.addParam("sip_callid",t->getCallID());
String tmp(message->getHeader("Expires"));
if (tmp.null())
tmp = hl->getParam("expires");
int expires = tmp.toInteger(-1);
if (expires < 0)
expires = s_expires_def;
if (expires > s_expires_max)
expires = s_expires_max;
tmp = expires;
msg.setParam("expires",tmp);
String user;
@ -5450,14 +5459,6 @@ void YateSIPEndPoint::regRun(const SIPMessage* message, SIPTransaction* t)
msg.setParam("ip_port",String(rport));
msg.setParam("ip_transport",message->getParty()->getProtoName());
if (expires && (expires < s_expires_min)) {
tmp = s_expires_min;
SIPMessage* r = new SIPMessage(t->initialMessage(),423);
r->addHeader("Min-Expires",tmp);
t->setResponse(r);
r->deref();
return;
}
bool dereg = false;
if (!expires) {
msg = "user.unregister";