Hi,
based on Juha's patch - saving in usrloc the supported methods
advertised during REGISTER - I extended lookup() function to perform
method based filtering. What this means: lookup() may return only
contacts which supports the method of the processed request.
Ex: there are two clients registering as same user:
1) a SIP phone which support INVITE & family, but no presence and
messaging.
2) a soft messaging client : supports only MESSAGE
When a call hits the server, the lookup() will send it only to contact
(1), to the phone, since the contact (2) does not support INVITE. When a
MESSAGE hits the server, the lookup() will send it only to contact (2),
to the soft client, since the contact (1) does not support MESSAGE.
the advantage is that you avoid un-necessary parallel forking and extra
signalling. Also there are SIP implementation which does not even reply
to methods they are not supporting, forcing the proxy to generate
timeout..:(
The feature may be turned on or off via the module parameter
"method_filtering":
http://www.openser.org/docs/modules/1.1.x/registrar.html#AEN247
For more, see also the script snapshot from :
http://www.openser.org/docs/modules/1.1.x/registrar.html#AEN288
regards,
bogdan