/* * Send a request using data from the dialog structure * ret_index and ret_label will identify the new cell */ int t_uac_with_ids(str* method, str* headers, str* body, dlg_t* dialog, transaction_cb cb, void* cbp, unsigned int *ret_index, unsigned int *ret_label) { struct retr_buf *request; struct cell *cell; int ret; int is_ack; ret = t_uac_prepare(method, headers, body, dialog, cb, cbp, &request, &cell); if (ret < 0) return ret; is_ack = (method->len == 3) && (memcmp("ACK", method->s, 3)==0) ? 1 : 0; send_prepared_request_impl(request, !is_ack /* retransmit */); if (is_ack) { if (cell) free_cell(cell); if (ret_index && ret_label) *ret_index = *ret_label = 0; } else { if (ret_index && ret_label) { *ret_index = cell->hash_index; *ret_label = cell->label; } } return ret; }
/* * Send a request using data from the dialog structure */ int t_uac(str* method, str* headers, str* body, dlg_t* dialog, transaction_cb cb, void* cbp) { struct retr_buf *request; struct cell *cell; int ret; int is_ack; ret = t_uac_prepare(method, headers, body, dialog, cb, cbp, &request, &cell); if (ret < 0) return ret; is_ack = (method->len == 3) && (memcmp("ACK", method->s, 3)==0) ? 1 : 0; send_prepared_request_impl(request, !is_ack /* retransmit */); if (cell && is_ack) free_cell(cell); return ret; }
/* * Send a request using data from the dialog structure * ret_index and ret_label will identify the new cell */ int t_uac_with_ids(uac_req_t *uac_r, unsigned int *ret_index, unsigned int *ret_label) { struct retr_buf *request; struct cell *cell; int ret; int is_ack; ret = t_uac_prepare(uac_r, &request, &cell); if (ret < 0) return ret; is_ack = (uac_r->method->len == 3) && (memcmp("ACK", uac_r->method->s, 3)==0) ? 1 : 0; send_prepared_request_impl(request, !is_ack /* retransmit */); if (is_ack) { if (cell) free_cell(cell); if (ret_index && ret_label) *ret_index = *ret_label = 0; } else { if (ret_index && ret_label) { *ret_index = cell->hash_index; *ret_label = cell->label; } } return ret; }
void send_prepared_request(struct retr_buf *request) { send_prepared_request_impl(request, 1 /* retransmit */); }