osip-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [osip-dev] improvement for eXosip_call_terminate


From: Aymeric Moizard
Subject: Re: [osip-dev] improvement for eXosip_call_terminate
Date: Tue, 6 Jan 2015 15:54:26 +0100

If we change the behavior of the SIP transaction, the stack
becomes uncompliant. But I agree in practice, this might be
useful. It worth to say that your patch is not stopping 
restransmission but also killing transaction... which is.. different ;)

I will test the behavior of the patch but it might be better to have a
new API doing this.

Any alternative from you? ;)

Regards,
Aymeric


2014-12-22 12:36 GMT+01:00 FEICHTER Christoph <address@hidden>:
hi,
 
… and one more improvement:
I suggest it would be good, if eXosip_call_terminate would
stop retransmitting the INVITE request.
 
this would be useful especially for the following scenario:
you have 2 alternative outbound-proxies configured,
and try to reach the first – but it is not reachable.
then your app switches to the second outbound-proxy and tries the same
call via the second proxy – but the retransmissions to the first proxy are still ongoing !
then it could happen, that by chance a retransmission of the first INVITE gets answered – in case
proxy1 comes up – but the app’s intention was to use proxy2 !
 
I would suggest instead of:
 
  if (jd == NULL || jd->d_dialog == NULL) {
    OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_ERROR, NULL, "eXosip: No established dialog!\n"));
    return OSIP_WRONG_STATE;
  }
 
to write the following:
 
  if (jd == NULL || jd->d_dialog == NULL) {
    OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL, "eXosip: stopping INVITE retransmissions by deleting transaction!\n"));
 
    /* remove transaction from osip list */
    osip_remove_transaction(excontext->j_osip, tr);
 
    /* remove transaction from call list */
    _eXosip_remove_transaction_from_call(tr, jc);
 
    /* free the transaction */
    _eXosip_delete_reserved (tr);
    _eXosip_dnsutils_release (tr->naptr_record);
    tr->naptr_record = NULL;
    osip_transaction_free (tr);
 
    return OSIP_SUCCESS;
  }
 
what do you think ?
 
br,
christoph
 
 

_______________________________________________
osip-dev mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/osip-dev




--

reply via email to

[Prev in Thread] Current Thread [Next in Thread]