Am 17.03.2010 17:55, schrieb IƱaki Baz Castillo:
2010/3/17 Klaus Darilionklaus.mailinglists@pernau.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 :)