implement automatic retry in case of "Interval too brief" for registers.

This commit is contained in:
Simon Morlat 2011-08-25 23:37:44 +02:00
parent e933e1eae1
commit 400b71a140
2 changed files with 17 additions and 1 deletions

View file

@ -1769,6 +1769,22 @@ static bool_t registration_failure(Sal *sal, eXosip_event_t *ev){
case 407:
return process_authentication(sal,ev);
break;
case 423: /*interval too brief*/
{/*retry with greater interval */
osip_header_t *h=NULL;
osip_message_t *msg=NULL;
osip_message_header_get_byname(ev->response,"min-expires",0,&h);
if (h && h->hvalue && h->hvalue[0]!='\0'){
int val=atoi(h->hvalue);
if (val>op->expires)
op->expires=val;
}else op->expires*=2;
eXosip_lock();
eXosip_register_build_register(op->rid,op->expires,&msg);
eXosip_register_send_register(op->rid,msg);
eXosip_unlock();
}
break;
case 606: /*Not acceptable, workaround for proxies that don't like private addresses
in vias, such as ekiga.net
On the opposite, freephonie.net bugs when via are masqueraded.

@ -1 +1 @@
Subproject commit 340acff0001e92d1f126b484d100e1c1d0746b34
Subproject commit 83459cfa169478fc563b606fb141b60fa07ab861