Bogdan-Andrei Iancu wrote:
Hi Klaus,
that was a second idea :).
actually you do not have to do anything special to keep the CANCEL in
memory - it will be kept as transaction if you forward it statefully.
what I do not like in this approach is that for each INVITE you have to
search for a potential previous CANCEL - which is quite consuming... I
would prefer an approach with minimum impact on the performance.
Hi Bogdan!
One one hand we care about fast transaction handling/matching, on the
other hand we have problem with external lookups which take a long time
(db, radius, DNS ...) compared to opensers internal processing.
For example: 4 clients send an INVITE to a domain with a broken
delegation. Thus, all threads are busy doing DNS. Thus, a SIP proxy
which can handle 1000000000 requests per second is oversized in real
life scenarios, were the external processing is the bottleneck (unless
we start 1000000000 threads).
Of course I'm happy that openser peforms quite well, but in my scenarios
performance problems are always external. And I really would like a
working INVITE/CANCEL which deals with these problems.
regards
klaus
regards,
bogdan
Klaus Darilion wrote:
With the latest CVS build of OSER, when an INVITE is
sent followed by a
CANCEL, before OSER has finished processing the initial INVITE, the
outbound call is not torn down, and SER routes the CANCEL message to
itself.
this is more a logical problem and not sure how it can be fixed (if
it can be fixed). The only idea it come into my mind is to delay the
CANCEL that does not match a transaction....but is quite ugly.
What about forwarding the CANCEL and keept in in memory. For every
incoming INVITE we will first check if there is already a CANCEL for
this.