diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 65db5a709..1a7c1d5e1 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -717,7 +717,7 @@ static void sip_config_read(LinphoneCore *lc) /* get proxies config */ for(i=0;; i++){ - LinphoneProxyConfig *cfg=linphone_proxy_config_new_from_config_file(lc->config,i); + LinphoneProxyConfig *cfg=linphone_proxy_config_new_from_config_file(lc,i); if (cfg!=NULL){ linphone_core_add_proxy_config(lc,cfg); }else{ diff --git a/coreapi/presence.c b/coreapi/presence.c index df9271844..183002b86 100644 --- a/coreapi/presence.c +++ b/coreapi/presence.c @@ -81,15 +81,17 @@ static const char *person_prefix = "/pidf:presence/dm:person"; /***************************************************************************** * PRIVATE FUNCTIONS * ****************************************************************************/ - -static char presence_id_valid_characters[] = "0123456789abcdefghijklmnopqrstuvwxyz"; +/*defined in http://www.w3.org/TR/REC-xml/*/ +static char presence_id_valid_characters[] = "0123456789abcdefghijklmnopqrstuvwxyz-."; +/*NameStartChar (NameChar)**/ +static char presence_id_valid_start_characters[] = ":_abcdefghijklmnopqrstuvwxyz"; static char * generate_presence_id(void) { char id[7]; int i; - - for (i = 0; i < 6; i++) { - id[i] = presence_id_valid_characters[random() % sizeof(presence_id_valid_characters)]; + id[0] = presence_id_valid_start_characters[random() % (sizeof(presence_id_valid_start_characters)-1)]; + for (i = 1; i < 6; i++) { + id[i] = presence_id_valid_characters[random() % (sizeof(presence_id_valid_characters)-1)]; } id[6] = '\0'; diff --git a/coreapi/private.h b/coreapi/private.h index 1b8a0d4ad..690498c98 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -360,7 +360,7 @@ LinphoneProxyConfig * linphone_core_lookup_known_proxy(LinphoneCore *lc, const L const char *linphone_core_find_best_identity(LinphoneCore *lc, const LinphoneAddress *to); int linphone_core_get_local_ip_for(int type, const char *dest, char *result); -LinphoneProxyConfig *linphone_proxy_config_new_from_config_file(struct _LpConfig *config, int index); +LinphoneProxyConfig *linphone_proxy_config_new_from_config_file(LinphoneCore *lc, int index); void linphone_proxy_config_write_to_config_file(struct _LpConfig* config,LinphoneProxyConfig *obj, int index); int linphone_proxy_config_normalize_number(LinphoneProxyConfig *cfg, const char *username, char *result, size_t result_len); diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 4f39247b6..201035606 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -1211,7 +1211,7 @@ void linphone_proxy_config_write_to_config_file(LpConfig *config, LinphoneProxyC -LinphoneProxyConfig *linphone_proxy_config_new_from_config_file(LpConfig *config, int index) +LinphoneProxyConfig *linphone_proxy_config_new_from_config_file(LinphoneCore* lc, int index) { const char *tmp; const char *identity; @@ -1219,6 +1219,7 @@ LinphoneProxyConfig *linphone_proxy_config_new_from_config_file(LpConfig *config LinphoneProxyConfig *cfg; char key[50]; int interval; + LpConfig *config=lc->config; sprintf(key,"proxy_%i",index); @@ -1226,7 +1227,7 @@ LinphoneProxyConfig *linphone_proxy_config_new_from_config_file(LpConfig *config return NULL; } - cfg=linphone_proxy_config_new(); + cfg=linphone_core_create_proxy_config(lc); identity=lp_config_get_string(config,key,"reg_identity",NULL); proxy=lp_config_get_string(config,key,"reg_proxy",NULL);