-Wed Sep 3 14:29:36 EDT 2008
+Wed Sep 3 14:31:22 EDT 2008
}
/** Mark client request as a terminating one */
-su_inline void nua_client_terminating(nua_client_request_t *cr)
+su_inline void nua_client_set_terminating(nua_client_request_t *cr, int value)
{
- cr->cr_terminating = 1;
+ cr->cr_terminating = value != 0;
}
int nua_client_init_request(nua_client_request_t *cr);
#endif
if (nu->nu_substate == nua_substate_terminated)
- cr->cr_terminating = 1;
+ nua_client_set_terminating(cr, 1);
if (cr->cr_terminating) {
nua_server_request_t *sr;
if (sr->sr_usage == du) {
/* If subscribe has not been responded, don't terminate usage by NOTIFY */
sr->sr_terminating = 1;
- cr->cr_terminating = 0;
+ nua_client_set_terminating(cr, 0);
break;
}
}
cr->cr_event != nua_r_publish ||
(du && du->du_shutdown) ||
(sip->sip_expires && sip->sip_expires->ex_delta == 0);
- cr->cr_terminating = un;
+ nua_client_set_terminating(cr, un);
done = un;
if (du) {
unreg = cr->cr_event != nua_r_register ||
(sip->sip_expires && sip->sip_expires->ex_delta == 0);
if (unreg)
- nua_client_terminating(cr);
+ nua_client_set_terminating(cr, 1);
du = nua_dialog_usage_add(nh, nh->nh_ds, nua_register_usage, NULL);
if (du == NULL)
if ((du && du->du_shutdown) ||
(sip->sip_expires && sip->sip_expires->ex_delta == 0))
- nua_client_terminating(cr);
+ nua_client_set_terminating(cr, 1);
if (contacts) {
if (!cr->cr_terminating) {
break;
/* All contacts have expires=0 */
if (m == NULL)
- nua_client_terminating(cr);
+ nua_client_set_terminating(cr, 1);
}
}
*
* @par Terminating Dialog Usages and Dialogs
*
- * The response can be marked as terminating with nua_client_terminating().
+ * The response is marked as terminating with nua_client_set_terminating().
* When a terminating request completes the dialog usage is removed and the
* dialog is destroyed (unless there is an another active usage).
*/
if (sip_add_tagis(cr->cr_msg, NULL, &tags) < 0)
/* XXX */;
- cr->cr_terminating = terminating;
+ nua_client_set_terminating(cr, terminating);
return nua_client_request_try(cr);
}
}
if (terminating)
- cr->cr_terminating = terminating;
+ nua_client_set_terminating(cr, terminating);
if (nua_client_request_queue(cr))
return 0;
sip_time_t expires = 0;
if (cr->cr_event == nua_r_destroy || !du || du->du_shutdown)
- cr->cr_terminating = 1;
+ nua_client_set_terminating(cr, 1);
if (du) {
struct event_usage *eu = nua_dialog_usage_private(du);
sip_t const *sip)
{
nua_handle_t *nh = cr->cr_owner;
- nua_dialog_usage_t *du = cr->cr_usage;
+ nua_dialog_usage_t *du = cr->cr_usage;
struct event_usage *eu = nua_dialog_usage_private(du);
enum nua_substate substate;
if (substate == nua_substate_terminated)
/* let nua_base_client_tresponse to remove usage */
- cr->cr_terminated = 1;
+ cr->cr_terminated = 1;
}
return nua_base_client_tresponse(cr, status, phrase, sip,