dns: add dns_rr_dup and test_dns_rr_dup#1512
Conversation
|
Can confirm that two requests compete to have the same |
test/dns.c
Outdated
| struct dns_query *q = NULL; | ||
| struct dns_query *q1 = NULL; | ||
| struct dns_query *q2 = NULL; | ||
| struct test_dns_cache_parallel parallel = {0}; |
There was a problem hiding this comment.
Would it be possible to move this to the regular tests ?
The regular tests include more variations like OOM, threading etc..
There was a problem hiding this comment.
Yes, thanks for the feedback. We will keep working on this. We're pretty sure the shared pointers to the rr objects lead to the DNS problems we're experiencing with parallel outgoing SIP requests. We're trying to pinpoint it exactly and come up with a proper solution.
There was a problem hiding this comment.
The test does not check what currently is expected when dnsc API is used in request.c.
ASSERT_TRUE(parallel.rrv[0] != parallel.rrv[1]);It checks that rr is not shared.
|
Currently we observe a failed DNS request if two SIP INVITE are tried to be sent directly one after another. I am still not sure that there is a bug in Anyway, we have a failed SIP requests with |
|
Note, that |
|
I think that I found the bug. /* wait for other (A/AAAA) query to complete */
if (req->dnsq || req->dnsq2)
return;The continuity of filling and consuming I'll try to write a unit test that reproduces this. |
|
This method is called Happy Eyeballs and can be used for e.g. SIP and HTTP, please take a look here: https://datatracker.ietf.org/doc/html/rfc6555 Both DNS A+AAAA query is sent at the same time and the first one to respond will be used. |
|
As a first step, should we add AAAA tests? #1515 Then we could add a test that runs A+AAAA query in parallel and reproduces the issue. |
6435d89 to
080ab74
Compare
080ab74 to
28384ce
Compare
28384ce to
643e610
Compare
|
This looks good. The windows test run was already fixed. A rebase should solve this. |
643e610 to
3ce42af
Compare
3ce42af to
abe95f6
Compare
No description provided.