Bug 23891

Summary: c-ares некорректно обрабатывает PF_UNSPEC в вызове ares_gethostbyname
Product: Sisyphus Reporter: Руслан <ruslan.zabirov>
Component: c-aresAssignee: Anton Farygin <rider>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: rider
Version: unstable   
Hardware: x86   
OS: Linux   

Description Руслан 2010-08-15 00:20:31 MSD
Перестал работать curl. curl -D - 'http://api.bfbcs.com/api/pc?globalstats' не может подключиться к сайту. Прописал айпи в хосты и все заработало. nslookup api.bfbcs.com выдает айпи нормально т.е днс работает.
Comment 1 Anton Farygin 2010-08-15 00:35:11 MSD
curl пытается использовать ipv6 для этого хоста.

с другими хостами всё работает хорошо.
Comment 2 Anton Farygin 2010-08-15 00:43:16 MSD
да, опция curl -4 помогает решить эту проблему.
Comment 3 Anton Farygin 2010-08-15 00:51:24 MSD
curl отдаёт выбор того, что именно нужно и как резолвить функциям библиотеки c-ares.

Конкретнее, он вызывает ares_gethostbyname с family=PF_UNSPEC.

Соответственно, некорректно выбирает библиотека c-ares, а не curl. У меня это воспроизводится на старом curl-7.20.0 и libcares-1.7.1

Подробности этой ошибки можно почитать тут:
http://curl.haxx.se/mail/lib-2008-10/0123.html
Comment 4 Руслан 2010-08-15 13:41:26 MSD
у меня воспроизводиться это на curl-7.21.1-alt1 и libcares-1.7.3-alt1
.
Comment 5 Victor Forsyuk 2010-08-19 19:54:36 MSD
(В ответ на комментарий №3)
> curl отдаёт выбор того, что именно нужно и как резолвить функциям библиотеки
> c-ares.
> 
> Конкретнее, он вызывает ares_gethostbyname с family=PF_UNSPEC.
> 
> Соответственно, некорректно выбирает библиотека c-ares, а не curl. У меня это
> воспроизводится на старом curl-7.20.0 и libcares-1.7.1
> 
> Подробности этой ошибки можно почитать тут:
> http://curl.haxx.se/mail/lib-2008-10/0123.html

Да, некорректна логика работы c-ares, а не curl, но фиксить проблему сейчас следует путем сборки curl без c-ares, со своим threaded resolver. См. https://bugzilla.altlinux.org/23486

В связи с этим WONTFIX. Апстрим c-ares о проблеме знает, но ее решение приведет к изменению API. Поэтому будем ждать решения апстрима... BTW, у libcares в сизифе кроме curl еще только один клиент - bzflag.