hi,
I think that the function eXosip_call_build_prack is not fully RFC 3262 conform.
It should not be possible to generate a PRACK request, which has no RAck header !
currently this is possible, due to this section (eXcall_api.c, line 1097ff):
|
osip_message_header_get_byname(tr->last_response, "RSeq", 0, &rseq); |
|
if (rseq != NULL && rseq->hvalue != NULL) { |
|
char tmp[128]; |
|
|
|
memset(tmp, '\0', sizeof(tmp)); |
|
snprintf(tmp, 127, "%s %s %s", rseq->hvalue, |
|
tr->orig_request->cseq->number, tr->orig_request->cseq->method); |
|
osip_message_set_header(*prack, "RAck", tmp); |
|
} |
|
|
|
return OSIP_SUCCESS; |
the implementation has been different before.
this check was the right implementation – which has been removed:
osip_message_header_get_byname (tr->last_response, "RSeq", 0, &rseq);
if (rseq == NULL || rseq->hvalue == NULL) {
return OSIP_WRONG_FORMAT;
}
If there is no RSeq header found in the last INVITE-response,
a PRACK cannot be built.
br,
christoph