[sr-dev] improving the dialog module

Iñaki Baz Castillo ibc at aliax.net
Thu Mar 18 14:11:57 CET 2010


2010/3/18 Timo Reimann <timo.reimann at 1und1.de>:
>> Yes, that's the point, the in-dialog requests. The only way is by
>> inspecting the route-set of the request but this involver ugly SIP
>> URI comparisons. But this can be really simpliffied using RR-cookies
>> as RR module already uses, right? If not, the dialog hash_id could be
>> added to the Record-Route during loose_route().
>
> The dialog module currently supports three modes of matching dialogs
> (actually, it's just two because the third mode is a combination of both
> were one is used as fallback). See here for a short description:
>
> http://kamailio.org/docs/modules/1.5.x/dialog.html#id2491878
>
> (The modes haven't changed for 3.x.)

Thanks for clarification. More inline:


> Matching on SIP elements only employs the Call-ID, From-tag, and To-tag
> currently. Record set is stored but its usage apparently limited to
> displaying purposes (i.e., MI interface): dlg_hash.h's match_dialog()
> function doesn't show any sign of record set parsing.

Yes sure, note that matching a route-set involves complex SIP URI
comparisons, which would be not very "efficient".


> For DID-(cookie-)based matching, a reference to the hashed dialog
> data-structure is attached to the record set by the time the dialog is
> created, and later fetched when on-route processing in dlg_onroute()
> (called from loose_route()) is performed.

Ok, then this way (using cookie) is the *only* way to properly match
dialogs when an spiral occurs. Do you agree?

Of course, a malicious user could modify such cookie value so kamailio
couldn't match the dialog, or it could match it according to
From/To-tags and Call-ID, but then it's not possible to differentiate
between two dialogs originated due to a spiral (the in-dialog request
matches both if route-set is not inspected).

So the next question would be: do we need two dialog entries to be
created when an INVITE does a spiral? As I understand this is fully
possible as the INVITE after the spiral is a new transaction and
future in-dialog requests would be matched against the appropriate
dialog based on the dialog cookie, right?

Regards.


-- 
Iñaki Baz Castillo
<ibc at aliax.net>



More information about the sr-dev mailing list