Daniel-Constantin Mierla writes:
Hmm ... the issue seems to be related to missing
record-route list for
callee side in the transaction record.
I do not have a test bedwhere I can reproduce during the next days,
would it be possible for you to use topos with db backend (mysql)
instead of redis and send again the logs with debug=3? That should
provide details of the db queries and indicate if the record-route
values are stored/retrieved to/from database.
Daniel,
We did more tests, this time using topos mysql instead of redis. With
exactly same config, PRACK to 183 is now forwarded correctly:
A->P1->P2->P1-B. We then switched back to redis and P1 responded with
404 as before when it received the PRACK. So looks like there is some
issue with redis.
But, there is another problem that showed up with mysql topos.
When A receives 200 OK to PRACK, it sends another PRACK with the same
"CSeq: 2 PRACK" header, to which P1 responds with 200 OK without
forwarding the PRACK. So looks like it thinks there is something with
the 200 OK that A does not like . The same happens three more times.
At the third time P1 forwards the PRACK to P2, which forwards is back to
P1 starting a loop that finally gets terminated with "483 Too many
hops".
Syslog of P1 shows these kind of error messages during PRACK processing:
Apr 22 12:49:49 edge /usr/bin/edge-proxy[402]: ERROR: {2 2 PRACK FQzhCOkpzqUJGaXntnCyKw}
topos [topos_mod.c:416]: tps_prepare_msg(): mandatory headers missing - via1: (nil)
callid: 0x7f0b1b67c5b0
Lesson: do not try to use any dialog based stuff in a SIP proxy.
-- Juha