I've got two Linksys phones (one spa3000, one spa942)
and registered markkent@... from both on the openser1.0.1 box.
From a third device I call markkent@... and both ring.
If I take my
time answering one phone then everything works as expected.
The CANCEL gets sent to the second phone and that phone says OK and
maybe I get one spurious ring but it stops.
I noticed that if I answer one phone really quickly then the other
phone will keep on ringing. So, I looked at the traffic and this is
what happens:
The players are ORIGINATOR, OPENSER, ANSWEREDPHONE
and IGNOREDPHONE
ORIGINATOR sends the INVITE to OPENSER where it
gets branched out to both ANSWEREDPHONE and IGNOREDPHONE
Both phones send back "100 Trying"
ANSWEREDPHONE sends "180 Ringing" and OPENSER relays that
to ORIGINATOR
ANSWEREDPHONE sends "200 OK" when I answer, and OPENSER relays that
to ORIGINATOR
OPENSER sends "CANCEL sip:markkent@IGNOREDPHONE-IP:5062"
to IGNOREDPHONE
about 0.6 seconds later OPENSER repeats the CANCEL
IGNOREDPHONE sends back to OPENSER
481 Call Leg/Transaction Does Not Exist
and does it twice, perhaps once for each CANCEL
Then IGNOREDPHONE sends back "180 Ringing"
IGNOREDPHONE rings, a lot, but does not send back "180 Ringing" messages
There are a lot of "200 OK" messages exchanged between the
IGNOREDPHONE and the OPENSER box.
The IGNOREDPHONE took 5 seconds to send back the first "180 Ringing",
these phones are side by side, although IGNOREDPHONE (the 942) is
NAT'ed and ANSWEREDPHONE is not.
The ngrep output is here:
http://a.mainstreet.net/double-ring.txt
What I would like to know is whether this is something I can and/or
should handle in the openser configuration? If so, how?
Thanks,
-mark