Am 17.03.2010 17:55, schrieb IƱaki Baz Castillo:
2010/3/17 Klaus
Darilion<klaus.mailinglists(a)pernau.at>at>:
>> This is not valid for the case in which a dialog is forked by a proxy
>> behind our proxy. From the point of view of TM it's a single
>> transaction.
>
> That's true. It probably depends on what you actually want to track
with
the
dialog module.
E.g. if you just want to track the number of established
dialogs then you do not care about multiple early dialogs.
But it's also true that more and more modules want to depend on dialog
module (take a look to OpenSIPS loadbalancer or mediaproxy modules).
And they fail when handling forking calls.
> Btw: how are dialogs in dialog module and transactions in tm module are
> exactly identified? For example a response with proper callid and
fromtag
> but faked Via branch, will it be accepted by
dialog module but
ignored (drop
or stateless
forwarding) by tm?
Good question. IMHO it should be discarded as TM and dialog level (and
not relayed stateless).
> Or the other way round - e.g. a spoofed 200 reply with proper Via
branchid
> and false fromtag. Will it terminate the
transaction but keep the
dialog in
early state
But that is not a spoofed reply, instead it's just a 100% valid reply
with a different To-tag. It could occur if the called is a proxy which
performs serial forking (so after some seconds our proxy receives
responses with a new To-tag, i.e. the remote voicemail server).
Let's call it a malicious reply. I was talking about a false from-tag,
not to-tag. Thus, tm will accept the 200 ok and terminate the
transaction (if it is implemented RFC conform). If dialog module checks
from-tag it probably will ignore the reply.
Anyway, I guess dialog module is only good as helper module but
shouldn't be used as a reliable module (e.g. for security, accounting ...)
regards
klaus
Then the real
200 OK will be forwarded stateless by tm module
No, it would be a valid response according to TM.
> and may bypass dialog module (if callback is only triggered is there
is a
matching
transaction)?
But there is matching transaction so no problem :)