I have a large carrier that I am trying to send calls to,
and their major brand SIP/ISUP switch (whose name
begins with a "S") has a quirk where it emits a
183 Session Progress message with no SDP payload
immediately after 100 Trying, and before ACM has
actually been received. When ACM is received, it
emits either a 180 Ringing with a SDP payload,
or a 183 Session Progress with a SDP payload.
So
INVITE
100 Trying
183 Session Progress (no SDP payload)
180 Ringing (or 183 Session Progress) (with SDP payload)
200 OK (with SDP payload)
is what you normally get, with the two
18x messages coming one or two seconds apart.
However, if the called number is busy, you get
100 Trying
183 Session Progress (no SDP payload)
486 Busy Here
What the calling party experiences for that is a second
or two of ring-back commencing with the 183 Session
progress, then a busy signal. That's very non-compliant.
So far, the carrier has been unable to get this switch
to stop emitting the first 183 Session Progress message.
What I would like to do is have SER detect the redundant
183 Session Progress message (which I can already
detect), and then have SER discard it, eg not send
that one message back to whomever the INVITE came from.
So far, I have been unable to get SER to do this.
While "drop" is allowed in onreply_route sections,
it is silently ignored, and you get a reply anyway.
I tried putting a route(666) in the onreply_route section
and putting the drop in that route["666"] section,
but that had no obvious effect either, although some other
functions can now be used in route["666"] that so far
aren't solving the problem either.
It occurred to me that I could change the 183 Session Progress
of the offending message to something else in the "so-what"
department, such as a "181 Your Call Is Being Forwarded", but
"replace()" doesn't seem to work on the first line of replies,
but can certainly alter other things in the reply message.
There also doesn't seem to be any way (that actually works)
to change the numeric SIP Response Code value to something
else, even though clearly SER has it in the variable "status".
I even thought of changing the port number or IP address
via a rewrite command and send the message off to nowhere,
but those don't work on replies or don't appear to.
So, any suggestions on how to simply drop a chosen reply
message, or misdirect it or malform it to the point that
the call originator doesn't recognize it anymore? Yeah,
kludgy but I only need it to work for two months.
Thanks in advance!