return 0;
}
+/** Check if client request is in progress.
+ *
+ * A client request is in progress, if
+ * 1) it has actual transaction going on
+ * 2) it is waiting credentials from application
+ * 3) it is waiting for Retry-After timer
+ */
+int
+nua_client_request_in_progress(nua_client_request_t const *cr)
+{
+ return cr &&
+ (cr->cr_orq || cr->cr_wait_for_cred || cr->cr_timer);
+}
+
/**Initialize client request for sending.
*
* This function is called when the request is taken from queue and sent.
break;
}
- if (cr && cr->cr_orq == NULL) {
+ if (cr && !nua_client_request_in_progress(cr)) {
nua_client_init_request(cr);
}
return cr && cr->cr_prev;
}
+int nua_client_request_in_progress(nua_client_request_t const *cr);
+
int nua_client_request_complete(nua_client_request_t *cr);
int nua_client_request_remove(nua_client_request_t *cr);
int nua_client_request_clean(nua_client_request_t *cr);
if (ss->ss_state >= nua_callstate_terminating ||
/* INVITE is in progress or being authenticated */
- (cr && (cr->cr_orq || cr->cr_wait_for_cred)))
+ nua_client_request_in_progress(cr))
return;
/* UPDATE has been queued */