Anthony, all,
I wrote a fix this afternoon based on a git master pull (which compiles and works like a charm after some tests).
As I haven't done C programming in ages hence I'd be very grateful if one of you could tell me if the patch is very unstable/could cause a lot of troubles, and so on.
Here it is:
[user@vm ~]# diff /root/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.h /root/freeswitch_git_test/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.h
952c952
< uint8_t sofia_reg_handle_register_sw(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip,
---
uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip,
955,956c955
< uint32_t keylen, switch_event_t **v_event, const char *is_nat, sofia_private_t **sofia_private_p, switch_xml_t *user_xml, char *sw_acl_token);
< #define sofia_reg_handle_register(_nua_, _profile_, _nh_, _sip_, _de_, _regtype_, _key_, _keylen_, _v_event_, _is_nat_, _sofia_private_p_, _user_xml_) sofia_reg_handle_register_sw(_nua_, _profile_, _nh_, _sip_, _de_, _regtype_, _key_, _keylen_, _v_event_, _is_nat_, _sofia_private_p_, _user_xml_, NULL)
---
uint32_t keylen, switch_event_t **v_event, const char *is_nat, sofia_private_t **sofia_private_p, switch_xml_t *user_xml);
[user@vm ~]# diff /root/freeswitch/src/mod/endpoints/mod_sofia/sofia_reg.c /root/freeswitch_git_test/freeswitch/src/mod/endpoints/mod_sofia/sofia_reg.c
1119c1119
< uint8_t sofia_reg_handle_register_sw(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip,
---
uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip,
1121c1121
< uint32_t keylen, switch_event_t **v_event, const char *is_nat, sofia_private_t **sofia_private_p, switch_xml_t *user_xml, char *sw_acl_token)
---
uint32_t keylen, switch_event_t **v_event, const char *is_nat, sofia_private_t **sofia_private_p, switch_xml_t *user_xml)
1176,1179d1175
< // FK
< char *sw_to_user;
< char *sw_reg_host;
<
1405,1410d1400
< // FK
< if (sw_acl_token) {
< switch_split_user_domain(sw_acl_token, &sw_to_user, &sw_reg_host);
< to_user = sw_to_user;
< reg_host = sw_reg_host;
< }
2080,2081d2069
< // FK
< char acl_token[512] = "";
2159,2160d2146
< // FK
< const char *token_sw = NULL;
2164c2150
< if (!(ok = switch_check_network_list_ip_token(network_ip, last_acl, &token_sw))) {
---
if (!(ok = switch_check_network_list_ip(network_ip, last_acl))) {
2171,2173d2156
< if (token_sw) {
< switch_set_string(acl_token, token_sw);
< }
2194c2177
< sofia_reg_handle_register_sw(nua, profile, nh, sip, de, type, key, sizeof(key), &v_event, is_nat, sofia_private_p, NULL, acl_token);
---
sofia_reg_handle_register(nua, profile, nh, sip, de, type, key, sizeof(key), &v_event, is_nat, sofia_private_p, NULL);
I don't mean it to be integrated into FS core, if you don't want it to be.
I am just willing to use it for our platform and would like your advices because I am not very confident about the dev done.
Thanks all in advance!
Florent