Hi,
for a local reply (e.g. 408 on request timeout with dns failover)
t_should_relay_response() and t_pick_branch() is called - which uses
t_reply.c
1190 rpl = t->uac[b].reply;
to check for FAKED_REPLY in get_prio().
But (that's the problem), this does not work for the
t_should_relay_response()-run of a local_reply()-branch.
The reason is, that store_reply(), which sets the necessary value:
t_reply.c
1663 if (rpl==FAKED_REPLY)
1664 trans->uac[branch].reply=FAKED_REPLY;
is called too late (after t_should_relay_response()):
t_reply.c, within local_reply()
2062 reply_status=t_should_relay_response( t, msg_status, branch,
2063 &local_store, &local_winner, cancel_data, p_msg );
2064 DBG("DEBUG: local_reply: branch=%d, save=%d, winner=%d\n",
2065 branch, local_store, local_winner );
2066 if (local_store) {
2067 if (!store_reply(t, branch, p_msg))
This can lead to miscalculation of branch prio values.
Cheers
Jasmin
Attachments:
- smime.p7s
(application/pkcs7-signature — 5.3 KB)