From 400b71a140ce9910439766cd850ecaa3636d287a Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 25 Aug 2011 23:37:44 +0200 Subject: [PATCH] implement automatic retry in case of "Interval too brief" for registers. --- coreapi/sal_eXosip2.c | 16 ++++++++++++++++ mediastreamer2 | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/coreapi/sal_eXosip2.c b/coreapi/sal_eXosip2.c index 389179008..9720d27c4 100644 --- a/coreapi/sal_eXosip2.c +++ b/coreapi/sal_eXosip2.c @@ -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. diff --git a/mediastreamer2 b/mediastreamer2 index 340acff00..83459cfa1 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 340acff0001e92d1f126b484d100e1c1d0746b34 +Subproject commit 83459cfa169478fc563b606fb141b60fa07ab861