Ignore:
Timestamp:
Jun 20, 2010 8:58:26 AM (14 years ago)
Author:
bennylp
Message:

Fixed #1086 (New option to update the Contact URI in a single REGISTER request): added contact_rewrite_method account config to control this. Default is to use the new mechanism, i.e. the single REGISTER method.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_acc.c

    r3190 r3213  
    10991099 
    11001100    PJ_LOG(3,(THIS_FILE, "IP address change detected for account %d " 
    1101                          "(%.*s:%d --> %.*s:%d). Updating registration..", 
     1101                         "(%.*s:%d --> %.*s:%d). Updating registration " 
     1102                         "(using method %d)", 
    11021103                         acc->index, 
    11031104                         (int)uri->host.slen, 
     
    11061107                         (int)via_addr->slen, 
    11071108                         via_addr->ptr, 
    1108                          rport)); 
    1109  
    1110     /* Unregister current contact */ 
    1111     pjsua_acc_set_registration(acc->index, PJ_FALSE); 
    1112     if (acc->regc != NULL) { 
    1113         pjsip_regc_destroy(acc->regc); 
    1114         acc->regc = NULL; 
    1115         acc->contact.slen = 0; 
    1116     } 
    1117  
    1118     /* Update account's Contact header */ 
     1109                         rport, 
     1110                         acc->cfg.contact_rewrite_method)); 
     1111 
     1112    pj_assert(acc->cfg.contact_rewrite_method == 1 || 
     1113              acc->cfg.contact_rewrite_method == 2); 
     1114 
     1115    if (acc->cfg.contact_rewrite_method == 1) { 
     1116        /* Unregister current contact */ 
     1117        pjsua_acc_set_registration(acc->index, PJ_FALSE); 
     1118        if (acc->regc != NULL) { 
     1119            pjsip_regc_destroy(acc->regc); 
     1120            acc->regc = NULL; 
     1121            acc->contact.slen = 0; 
     1122        } 
     1123    } 
     1124 
     1125    /* 
     1126     * Build new Contact header 
     1127     */ 
    11191128    { 
    11201129        char *tmp; 
     
    11521161        } 
    11531162        pj_strdup2_with_null(acc->pool, &acc->contact, tmp); 
    1154     } 
    1155  
    1156     /* Always update, by http://trac.pjsip.org/repos/ticket/864. */ 
    1157     pj_strdup_with_null(tp->pool, &tp->local_name.host, via_addr); 
    1158     tp->local_name.port = rport; 
     1163 
     1164        /* Always update, by http://trac.pjsip.org/repos/ticket/864. */ 
     1165        pj_strdup_with_null(tp->pool, &tp->local_name.host, via_addr); 
     1166        tp->local_name.port = rport; 
     1167 
     1168    } 
     1169 
     1170    if (acc->cfg.contact_rewrite_method == 2 && acc->regc != NULL) { 
     1171        pjsip_regc_update_contact(acc->regc, 1, &acc->contact); 
     1172    } 
    11591173 
    11601174    /* Perform new registration */ 
Note: See TracChangeset for help on using the changeset viewer.