Hello,
I have merged the Edge Proxy support into git master. I'd appreciate it if anyone who has a client that supports outbound (and a registrar that supports it) as I have been travelling the last couple of weeks while I've been working on this and have had access to neither.
I thought it would also be worth summarising what I know is still required for full outbound support on Kamailio. I hope to have time to do some of this (items 1 and 2 specifically) during the week, but it will be my first week back in the office and I am travelling again the week after. If I have time I will do some of these - but if there is anyone else who sees these as particularly important and wants to pick them up I'd be grateful:
1) registrar module support for RFC 5626 section 6:
When receiving a REGISTER request, the registrar MUST check from its Via header field if the registrar is the first hop or not. If the registrar is not the first hop, it MUST examine the Path header of the request. If the Path header field is missing or it exists but the first URI does not have an "ob" URI parameter, then outbound processing MUST NOT be applied to the registration. In this case, the following processing applies: if the REGISTER request contains the reg-id and the outbound option tag in a Supported header field, then the registrar MUST respond to the REGISTER request with a 439 (First Hop Lacks Outbound Support) response; otherwise, the registrar MUST ignore the "reg-id" parameter of the Contact header.
2) registrar modparam that specifies whether outbound is supported, required, or neither.
Behaviour when neither: * As now
Behaviour when supported: * Add Supported: header with outbound options-tag to the 200 OK
Behaviour when required: * Reject (with 421 Extension Required) REGISTER requests without the outbound options-tag in a Supported: or Require: header * Add Supported: and Require: headers with outbound options-tag to the 200 OK
3) Single server (combined edge proxy and registrar) behaviour
4) Testing along side registrar and usrloc module changes for multiple registrations from a single UA.
Note: There shouldn't be any conflict here as the edge and registrar changes should be independent of each other. However, I have no idea how to configure and use the new registrar and usrloc features.