El 01/08/14 01:24, Daniel-Constantin
Mierla escribió:
The uac from/to replacement relies that parties keep the same
from/to headers content.
The mechanism to replace A with B is to combine both and get the
key X which is added in the record-route as parameter. Then
practically from A and X results B and from B and X results A.
Now in this case, the notify comes with something different than
was in SUBSCRIBE, therefore the result is messed up.
Perhaps a check over the result to see if it is at least a good
value would be useful, but doesn't solve this issue.
If both sides in this dialog rely on RFC3261 dialog matching
(call-id, from tag and to tag), then practically after the initial
SUBSCRIBE (where is no To tag), then you can replace From/To
display name and uri with anything (e.g., anonymous).
An improvement could be to know in advance that one side is not
keeping From/To, then practically storing (encrypted/encode) the
intial value only. This requires C coding.
I had to patch kamailio to work around the issue. What I did is to
calculate a small (8-bit) XOR checksum of the old uri, and prepend
this byte on the old uri in order to calculate the rr parameter. On
restoring, the value should match, and if it does not, the relevant
header is left unchanged.
Is this strategy worthy of submitting for merge, or is it too hacky?