Bug 16349 - gajim не может резолвить имя сервера при смене сетевых настроек
: gajim не может резолвить имя сервера при смене сетевых настроек
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/gajim)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
: 16380
:
  Show dependency tree
 
Reported: 2008-07-14 12:25 by
Modified: 2008-09-17 17:35 (History)


Attachments
Temporary hack to call res_init(3) before a connection in gajim. (554 bytes, patch)
2008-07-17 22:19, avm
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-07-14 12:25:03
-запускаем программу
-подключаемся к jabber-серверу
-ставим статус "отключен"
-меняем сетевые настройки, в том числе и адрес ДНС-сервера(например, с
ноутбуком из офиса приехали домой)
-ставим статус "доступен"... gajim пытается подключиться, потом выдаёт
сообщение "не найден узел <имя ждаббер-сервера>. В tcpdump видно, что gajim
пытается подключиться к DNS-серверу по старому адресу, т.е. адрес DNS
запоминается во время старта и далее не обновляется до следующего рестарта.
------- Comment #1 From 2008-07-14 15:10:20 -------
Принято. Как раз недавно на эту тему исправляли pidgin; он теперь просто
перечитывает resolv.conf перед каждым коннектом. Ну и тут сделаем что-нибудь
похожее.
------- Comment #2 From 2008-07-16 16:36:29 -------
Современный gajim, когда ему нужно что-нибудь отрезолвить, запускает nslookup.
Так что бага странная. Точно gajim лезет в старый DNS?
------- Comment #3 From 2008-07-16 20:29:16 -------
rt@banzay-book ~ $ rpm -q gajim
gajim-0.11.4-alt1.1.qa1

rt@banzay-book ~ $ cat /etc/resolv.conf
nameserver 212.119.96.33
search home
nameserver 212.119.97.5


Вот лог tcpdump. первая группа строк - пинги к www.ru, потом gajim пытается
соединиться с jabber и обращается к DNS-серверу(192.168.13.1), который остался
у него от предыдущего сетевого профиля, а после нормально подключаемся к
imap-серверу при помощи правильного DNS. 

rt@banzay-book ~ $ sudo tcpdump -i ppp2 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp2, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
20:06:08.563109 IP 92.36.22.103.35727 > 212.119.96.33.domain: 10768+ A? www.ru.
(24)
20:06:09.378323 IP 212.119.96.33.domain > 92.36.22.103.35727: 10768 1/2/3 A
194.87.0.50 (140)
20:06:09.378922 IP 92.36.22.103 > 194.87.0.50: ICMP echo request, id 5947, seq
1, length 64
20:06:09.516987 IP 194.87.0.50 > 92.36.22.103: ICMP echo reply, id 5947, seq 1,
length 64
20:06:09.518433 IP 92.36.22.103.54622 > 212.119.96.33.domain: 16250+ PTR?
50.0.87.194.in-addr.arpa. (42)
20:06:09.649658 IP 212.119.96.33.domain > 92.36.22.103.54622: 16250 1/3/4 (200)
20:06:10.379060 IP 92.36.22.103 > 194.87.0.50: ICMP echo request, id 5947, seq
2, length 64
20:06:10.515339 IP 194.87.0.50 > 92.36.22.103: ICMP echo reply, id 5947, seq 2,
length 64



20:06:19.607196 IP 92.36.22.103.34511 > 192.168.13.1.domain: 49851+ AAAA?
jabber.ru. (27)
20:06:24.607744 IP 92.36.22.103.34511 > 192.168.13.1.domain: 49851+ AAAA?
jabber.ru. (27)
20:06:29.607948 IP 92.36.22.103.41000 > 192.168.13.1.domain: 42099+ AAAA?
jabber.ru.home. (32)
20:06:34.608054 IP 92.36.22.103.41000 > 192.168.13.1.domain: 42099+ AAAA?
jabber.ru.home. (32)
20:06:39.608362 IP 92.36.22.103.45563 > 192.168.13.1.domain: 1972+ A?
jabber.ru. (27)
20:06:44.608569 IP 92.36.22.103.45563 > 192.168.13.1.domain: 1972+ A?
jabber.ru. (27)
20:06:49.608850 IP 92.36.22.103.56304 > 192.168.13.1.domain: 42905+ A?
jabber.ru.home. (32)
20:06:54.609031 IP 92.36.22.103.56304 > 192.168.13.1.domain: 42905+ A?
jabber.ru.home. (32)


20:07:23.798084 IP 92.36.22.103.49610 > 212.119.96.33.domain: 58860+ AAAA?
imap.aspirinka.net. (36)
20:07:24.874517 IP 212.119.96.33.domain > 92.36.22.103.49610: 58860 0/1/0 (78)
20:07:24.875406 IP 92.36.22.103.56004 > 212.119.96.33.domain: 10807+ AAAA?
imap.aspirinka.net.home. (41)
20:07:25.024086 IP 212.119.96.33.domain > 92.36.22.103.56004: 10807 NXDomain
0/1/0 (116)
20:07:25.024425 IP 92.36.22.103.36316 > 212.119.96.33.domain: 5954+ A?
imap.aspirinka.net. (36)
20:07:25.206561 IP 212.119.96.33.domain > 92.36.22.103.36316: 5954 1/2/0 A
212.158.162.151 (87)

Если перезапустить gajim, то соединение пройдёт успешно. 
Порылся в ~/gajim/config, но не нашёл настройки, из-за которой эта проблема
может быть моей локальной
------- Comment #4 From 2008-07-17 22:17:57 -------
Вот это репорт. Вот это я называю багрепорт. После такого стыдно немедленно не
починить багу.

Значит, так. Эту багу на gajim вешали давно:
http://trac.gajim.org/ticket/2859
Её закрыли с той мотивацией, что на самом деле корень зла в glibc, который не
перечитывает resolv.conf. Трудно не согласиться.

В связи с этим я пошёл вешать FR на glibc с просьбой приложить дебиановский
патч local-dynamic-resolvconf.diff.

Пока суд да дело (пока не вышел новый релиз glibc), gajim можно похакать. Хак
сейчас приложу.
------- Comment #5 From 2008-07-17 22:19:08 -------
Created an attachment (id=2707) [details]
Temporary hack to call res_init(3) before a connection in gajim.
------- Comment #6 From 2008-07-18 13:03:17 -------
хак работает, спасибо! (и ведь вроде лазил по гаджимову траку, но не нашел этой
ошибки. спасибо, ещё раз)
------- Comment #7 From 2008-09-17 10:33:29 -------
В Сизифе новый релиз glibc, который должен устранить эту проблему.
------- Comment #8 From 2008-09-17 11:25:53 -------
Раз не работало, а теперь работает - значит, fixed. Хоть починка и не в gajim.
------- Comment #9 From 2008-09-17 17:34:52 -------
(In reply to comment #8)
> Раз не работало, а теперь работает - значит, fixed.

Почему это важно? (На какие события в будущем может в принципе повлиять такая
замена resolution?)
------- Comment #10 From 2008-09-17 17:35:48 -------
На разгребание старых багов, скажем.