ANSI RLC has no parameters, not even optional, so add it to the specific table.

Accept with just a MILD warning messages that are truncated just before the optional parameters pointer.


git-svn-id: http://yate.null.ro/svn/yate/trunk@3177 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2010-04-09 16:58:03 +00:00
parent aaeed9c8be
commit a942d5f1ef
1 changed files with 14 additions and 4 deletions

View File

@ -1187,6 +1187,12 @@ static const MsgParams s_ansi_params[] = {
SS7MsgISUP::EndOfParameters
}
},
{ SS7MsgISUP::RLC, false,
{
SS7MsgISUP::EndOfParameters,
SS7MsgISUP::EndOfParameters
}
},
{ SS7MsgISUP::Unknown, false, { SS7MsgISUP::EndOfParameters } }
};
@ -2764,11 +2770,15 @@ bool SS7ISUP::decodeMessage(NamedList& msg,
} // while ((ptype = *plist++)...
// now decode the optional parameters if the message supports them
if (params->optional) {
unsigned int offs = paramPtr[0];
unsigned int offs = paramLen ? paramPtr[0] : 0;
if (offs >= paramLen) {
Debug(this,DebugWarn,"Invalid ISUP optional offset %u (len=%u) [%p]",
offs,paramLen,this);
return false;
if (paramLen) {
Debug(this,DebugWarn,"Invalid ISUP optional offset %u (len=%u) [%p]",
offs,paramLen,this);
return false;
}
Debug(this,DebugMild,"ISUP message %s lacking optional parameters [%p]",
msgName,this);
}
else if (offs) {
mustWarn = true;