<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>13789</bug_id>
          
          <creation_ts>2007-12-24 17:04:54 +0300</creation_ts>
          <short_desc>broken resolv.conf handling</short_desc>
          <delta_ts>2021-11-04 14:24:31 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kdenetwork-kppp</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="Nobody&apos;s working on this, feel free to take it">nobody</assigned_to>
          <cc>ahmedsayeed1982</cc>
    
    <cc>asy</cc>
    
    <cc>boyarsh</cc>
    
    <cc>hiddenman</cc>
    
    <cc>jinn</cc>
    
    <cc>vip0</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>59914</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2007-12-24 17:04:54 +0300</bug_when>
    <thetext>kppp из kdenetwork-3.5.8-alt2 криво заносит полученные MS-DNS в resolv.conf:

--- /etc/resolv.conf, /var/resolv/etc/resolv.conf
search uafoss
nameserver 213.169.64.100
nameserver 213.169.64.101
nameserver 192.168.1.1
nameserver 213.169.64.100       #kppp temp entry
nameserver 213.169.64.101       #kppp temp entry

--- /etc/ppp/resolv.conf
nameserver 213.169.64.100
nameserver 213.169.64.101

Утверждение &quot;kppp не лазит, если не включена (это по-умолчанию) соответствующая
опция в его настройках&quot; (https://bugzilla.altlinux.org/show_bug.cgi?id=4249#c28)
сейчас подтвердить не могу: по умолчанию стоит автомат, и ещё как лазит.

Есть предложение починить kppp методом переписывания текущих ip-up, ip-down из
нашего ppp-common, раз уж так хочется делать чужую работу.  Ужас в addpeerdns()
меня лично убедил только в том, что этой программе suid вовсе ни к чему. 
Особенно с учётом того, что без него она у меня сейчас таки звонит (при наличии
у пользователя прав на устройство).

Тогда может быть разумно выставлять переменную окружения RESOLV_MODS=no (&quot;не
модифицировать resolv.conf&quot;) перед вызовом pppd.

Или отключить/заблокировать в kppp этот UI по причине неработоспособности --
рабочая реализация засовывала бы полученные NS в начало списка, а не с O_APPEND.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59922</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2007-12-24 17:33:27 +0300</bug_when>
    <thetext>PS: сломанный объезд для этого убран из ppp-common (ip-up), чтоб не ломать
работу всего остального; можно воткнуть sleep, но тогда лучше будет
действительно как-то определять, что работаем в итоге из-под kppp, чтоб не спать
почём зря.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59926</commentid>
    <comment_count>2</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2007-12-24 17:48:46 +0300</bug_when>
    <thetext>(In reply to comment #0)
&gt; Тогда может быть разумно выставлять переменную окружения RESOLV_MODS=no (&quot;не
&gt; модифицировать resolv.conf&quot;) перед вызовом pppd.
В свое время Pilot больше этого ничего внятного сказать так и не смог.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59927</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2007-12-24 17:49:29 +0300</bug_when>
    <thetext>(In reply to comment #0)
&gt; Тогда может быть разумно выставлять переменную окружения RESOLV_MODS=no (&quot;не
&gt; модифицировать resolv.conf&quot;) перед вызовом pppd.
Это возможно только в /etc/net сделать</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59934</commentid>
    <comment_count>4</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2007-12-24 17:56:05 +0300</bug_when>
    <thetext>(In reply to comment #0)
&gt; сейчас подтвердить не могу: по умолчанию стоит автомат, и ещё как лазит.
А ты уверен, что это kppp не удалил за собой, а не pppd перезаписал 
сохраненное после того, как kppp за собой прибрался?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59935</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2007-12-24 18:26:37 +0300</bug_when>
    <thetext>У тебя есть на чём проверить?  Если нет -- забрасывай патчики или сборки, тут
стендовый модем и тестовый логин имени http://naverex.net наблюдаются :-)

&gt; А ты уверен, что это kppp не удалил за собой, а не pppd перезаписал 
&gt; сохраненное после того, как kppp за собой прибрался?
Копия /etc/resolv.conf в файле /etc/resolv.conf.save.$REALDEVICE создаётся
скриптом /etc/ppp/ip-up только при отсутствии &apos;#.*ppp temp entry&apos; (и вот тут
возможен ловимый ещё в #4249 рейс).  Соответственно оригинал восстанавливается
из этого файла только при его наличии.

Оставил только это (редактированием /etc/resolv.conf после дозвона kppp):

search uafoss
nameserver 192.168.1.1
nameserver 213.169.64.100   #kppp temp entry
nameserver 213.169.64.101   #kppp temp entry

получил после отключения:

# Generated by dhcpcd for interface eth0
search uafoss
nameserver 192.168.1.111
nameserver 195.69.84.1
nameserver 212.40.36.150

Значит, kppp не успело модифицировать resolv.conf.  Можешь сделать патчик с
выставлением RESOLV_MODS=&quot;no&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59938</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2007-12-24 19:44:10 +0300</bug_when>
    <thetext>(In reply to comment #5)
&gt; Можешь сделать патчик с выставлением RESOLV_MODS=&quot;no&quot;?
Я ж говорю, никто не сможет.
pppd сбрасывает переменные.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60869</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-10 19:07:11 +0300</bug_when>
    <thetext>В принципе, сейчас для обычного случая ничего плохого и не происходит, но
возможности kppp как GUI к resolv.conf в случае, когда там и так есть 1--3 DNS,
частично или полностью блокируются (поскольку в рассмотрение идут только три
первых nameserver).

Если переписать этот кусочек connect.cpp (кажется) так, чтобы сперва добавлять
свои NS, а потом перетаскивать всё остальное -- сложно/неинтересно,
а переменные для нас не работают (pppd действительно очищает окружение)
-- может, договоримся про файловый флажок где-нить в /var/run/ppp/users/ с
правами 1777? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60904</commentid>
    <comment_count>8</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-11 15:36:24 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; -- может, договоримся про файловый флажок
А может, про текстовый в /etc/resolv.conf? ;-)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60929</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-12 02:24:51 +0300</bug_when>
    <thetext>Плохо тем, что он расистый очень.  Т.е. он работает между коннектом (когда у
тебя  уже есть /etc/ppp/resolv.conf и ты с ним что-то начинаешь делать) и ip-up*.

Если навтыкать sleep, то ими же надо будет обтыкивать все ip-up.d/*, которые
могут хотеть резолвинг (по существу все).

А файловый флажок хорош тем, что ты бы его мог выставить сильно заранее и тем
избежать race.  И чистить его при загрузке проще/надёжней (на случай, если
питание пропало при поднятом линке -- наступали уже).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61039</commentid>
    <comment_count>10</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-14 16:33:27 +0300</bug_when>
    <thetext>(In reply to comment #9)
&gt; ты бы его мог выставить сильно заранее
только &quot;бы&quot; мешает

&gt; и тем избежать race.
в одном месте и сделать в другом

&gt; чистить его при загрузке проще/надёжней
проще и надежнее делать это в _одном_месте_

нужно скрипты научить обрабатывать &apos;#.*ppp temp entry&apos;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61174</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-16 04:46:08 +0300</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; ты бы его мог выставить сильно заранее
&gt; только &quot;бы&quot; мешает
Хорошо.  Авторы kppp могли бы, если б не были такими криворукими (что дописывают
своё в конец, а не в начало -- детская же ошибка).  И нам с тобой бы не пришлось
бы парить себе мозг :)

&gt; &gt; и тем избежать race.
&gt; в одном месте и сделать в другом
Я подумал перед тем, как предлагать такое разнесение.  Можешь пояснить, где и
как именно создаётся новый race?  Существовавший уже разжёван здесь:
https://bugzilla.altlinux.org/show_bug.cgi?id=4249#c21 (также #c34).

Собственно, ты тогда согласился сделать через переменную в #c77, но это
обломалось уже дальше.  Поскольку файл для нас не работает (race между
параллельно исполняющимися трогателями /etc/resolv.conf) и переменная -- тоже
(очистка среды pppd), я как следующий простейший вариант и предлагаю файловый
или каталожный флажок.

&gt; &gt; чистить его при загрузке проще/надёжней
&gt; проще и надежнее делать это в _одном_месте_
Как показала практика, не надёжнее.

&gt; нужно скрипты научить обрабатывать &apos;#.*ppp temp entry&apos;
Они продолжают уметь его обрабатывать, просто логика была перевёрнута -- эти
строчки воспринимались как _условие_ для того, чтоб /etc/ppp/ip-up занимался
/etc/resolv.conf.  Сейчас так:

grep -iqs &apos;#.*ppp temp entry&apos; /etc/resolv.conf || modify_resolver

PS: мож нарисуй себе на бумажке происходящее, понятней станет.  Думаешь, сколько
лет я боялся сюда залазить? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61211</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-16 15:42:16 +0300</bug_when>
    <thetext>(In reply to comment #11)
&gt; своё в конец, а не в начало -- детская же ошибка
Не сказал бы. Там похожее делается в других местах. Видимо, это не оказалось 
почему-то актуальным.
Если только в этом проблема, то для kppp это решаемо.
Патчить?

&gt; Я подумал перед тем, как предлагать такое разнесение. 
&gt; Можешь пояснить, где и как именно создаётся новый race?
Я могу абсолютно точно и без разжевывания пояснить, как новый race не 
появиться ;-)

&gt; или каталожный флажок.
Этот флажок мне больше кажется перекладыванием проблемы с больной головы на 
здоровую.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61212</commentid>
    <comment_count>13</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-16 15:49:14 +0300</bug_when>
    <thetext>Вообще, возникла еще 1-а идея патченья kppp. Попробую. Если получиться, 
расскажу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61234</commentid>
    <comment_count>14</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-16 20:36:02 +0300</bug_when>
    <thetext>kdenetwork-3.5.8-alt4
Сделал проверку /etc/sysconfig/network и недобавление , но чистку от своих 
записей оставил.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61285</commentid>
    <comment_count>15</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-17 14:12:14 +0300</bug_when>
    <thetext>Просьба проверить, а то у меня не на чем.
RESOLV_MODS должен быть не пуст. В kdenetwork-3.5.8-alt5 исправлю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61296</commentid>
    <comment_count>16</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-17 16:22:01 +0300</bug_when>
    <thetext>kdenetwork-3.5.8-alt5
Проверяйте. Как-минимум, хуже не станет.
В бранч тоже отправлю</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61375</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-18 18:36:45 +0300</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; своё в конец, а не в начало -- детская же ошибка
&gt; Не сказал бы. Там похожее делается в других местах.
Значит, там делается много детских ошибок...

&gt; &gt; Можешь пояснить, где и как именно создаётся новый race?
&gt; Я могу абсолютно точно и без разжевывания пояснить, как новый race 
&gt; не появиться ;-)
Иии? :-)

&gt; &gt; или каталожный флажок.
&gt; Этот флажок мне больше кажется перекладыванием проблемы с больной головы
&gt; на здоровую.
Вот только больная голова у нас -- это суидный kppp, который делает неподобающие
вещи неподобающим образом.

Возникла ещё более радикальная идея -- мож ты его научишь лезть не в
/etc/resolv.conf, а опять же в левый файлик с известным путём, доступный по
записи тем же, кому по control ppp, например, доступно выполнение pppd?  Я его в
ppp-common при наличии буду отрабатывать вместо переменных.

(In reply to comment #16)
&gt; kdenetwork-3.5.8-alt5
&gt; Проверяйте. Как-минимум, хуже не станет.
&gt; В бранч тоже отправлю

Проверяю с обычным проводным модемом IDC (указал руками заведомо левый DNS, чтоб
видно было, :

Opener: received SetSecret
Opener: received SetSecret
Opener: received OpenLock

Opener: received OpenDevice
Opener: received ExecPPPDaemon
In parent: pppd pid 31332
Couldn&apos;t find interface ppp0: No such device
Kernel supports ppp alright.
Opener: received RemoveSecret
Opener: received RemoveSecret

На этой стадии соединение установлено; маршрут по умолчанию via ppp0;
/etc/resolv.conf -- такой, как был; в /etc/sysconfig/network -- RESOLV_MODS=yes.

(мы там ещё много плюёмся X Error: BadWindow (invalid Window parameter), но это
оставим на совести апстрима)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61376</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-18 18:38:56 +0300</bug_when>
    <thetext>&gt; Возникла ещё более радикальная идея -- мож ты его научишь лезть не в
&gt; /etc/resolv.conf, а опять же в левый файлик с известным путём
в смысле &quot;и положишь туда NS&apos;ы и домен&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61378</commentid>
    <comment_count>19</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-18 19:08:44 +0300</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; Я могу абсолютно точно и без разжевывания пояснить, как новый race 
&gt; &gt; не появиться ;-)
&gt; Иии? :-)
Даже молчанием могу ;-)

&gt; Вот только больная голова у нас -- это суидный kppp,
&gt; который делает неподобающие вещи неподобающим образом.
Давай сделаем такой kppp, как другие? ;-)

&gt; записи тем же, кому по control ppp, например, доступно выполнение pppd?
Ну не нравиться мне новое извращение &quot;флажок&quot; :-)

&gt; Проверяю
[...]
&gt; На этой стадии соединение установлено; маршрут по умолчанию via ppp0;
&gt; /etc/resolv.conf -- такой, как был; в /etc/sysconfig/network -- 
RESOLV_MODS=yes.
А pppd был с peerdns запущен kppp-ом?
В kppp должно быть включено &quot;Автоматическая настройка DNS&quot;

[...]
&gt; (мы там ещё много плюёмся X Error: BadWindow (invalid Window parameter), но 
это
&gt; оставим на совести апстрима)
Это вплоть до Троллей можно раскрутить. Ничего страшного, в общем-то.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61379</commentid>
    <comment_count>20</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-18 19:21:30 +0300</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; Возникла ещё более радикальная идея -- мож ты его научишь лезть не в
&gt; &gt; /etc/resolv.conf, а опять же в левый файлик с известным путём
&gt; в смысле &quot;и положишь туда NS&apos;ы и домен&quot;
Я научил его лезть в /etc/sysconfig/network и не ложить ничего 
в /etc/resolv.conf, если это и так делается.

Оставил только чистку /etc/resolv.conf от &quot;#kppp temp entry&quot;
Только поэтому прошу проверить, не остался ли race
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61380</commentid>
    <comment_count>21</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-01-18 19:24:05 +0300</bug_when>
    <thetext>(In reply to comment #20)
&gt; Оставил только чистку /etc/resolv.conf от &quot;#kppp temp entry&quot;
Для того, чтоб почистить, что уже загажено.
Т.е., если race есть, то и это выключу.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61546</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-20 01:17:41 +0300</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; &gt; Я могу абсолютно точно и без разжевывания пояснить, как новый race 
&gt; &gt; &gt; не появиться ;-)
&gt; &gt; Иии? :-)
&gt; Даже молчанием могу ;-)
Ну когда ещё встретимся, чтоб его выслушать :-)

&gt; &gt; Вот только больная голова у нас -- это суидный kppp,
&gt; &gt; который делает неподобающие вещи неподобающим образом.
&gt; Давай сделаем такой kppp, как другие? ;-)
А какой сейчас у других?

&gt; &gt; записи тем же, кому по control ppp, например, доступно выполнение pppd?
&gt; Ну не нравиться мне новое извращение &quot;флажок&quot; :-)
Мне тоже... но то, что там прочитал, не нравится ещё сильнее.

&gt; &gt; На этой стадии соединение установлено; маршрут по умолчанию via ppp0;
&gt; &gt; /etc/resolv.conf -- такой, как был; в /etc/sysconfig/network -- 
&gt; RESOLV_MODS=yes.
&gt; А pppd был с peerdns запущен kppp-ом?
Не факт.

&gt; В kppp должно быть включено &quot;Автоматическая настройка DNS&quot;
Вообще-то я имел в виду, что если автонастройка включена -- то нам нет смысла
задействовать обработку DNS1/DNS2 в kppp, поскольку с этим прекрасно справляется
ip-up.d; а вот в случае, когда именно при поднятом дайлапе надо вручную
поставить НС-ы и домен (возможно, для каждого аккаунта -- свои) -- да, пожалуй
что лучше оставить это звонилке.  Хотя случай ближе к гипотетическому -- кто
знает, что туда _разного_ писать, обычно имеет broadband и/или VPN, а кто не
знает -- для тех ISP без автомата давно вымерли.

Короче говоря, тестировал единственный оставшийся разумным случай, но не поняв,
что ты таки читаешь (а не пишешь) RESOLV_MODS.

OK, проверю при его значении &quot;no&quot; (возможно, в понедельник).

&gt; &gt; оставим на совести апстрима)
&gt; Это вплоть до Троллей можно раскрутить. Ничего страшного, в общем-то.
Где-то так и подумал, просто сейчас уже реже вижу (после каких-то иксов был
праздник &quot;плюются все&quot; ;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61618</commentid>
    <comment_count>23</comment_count>
    <who name="Zerg">anubix</who>
    <bug_when>2008-01-21 00:23:08 +0300</bug_when>
    <thetext>(In reply to comment #22)
&gt; Вообще-то я имел в виду, что если автонастройка включена -- то нам нет
&gt; смысла задействовать обработку DNS1/DNS2 в kppp,
&gt; поскольку с этим прекрасно справляется ip-up.d
Да. Я сделал &quot;обработку DNS1/DNS2&quot; в зависимости от значения RESOLV_MODS
Но я не выключал чистку resolv.conf от строк , оканчивающихся &quot;#kppp temp 
entry&quot; или раскомментирования строк, содержащих &quot;#entry disabled by kppp&quot;
Это все в одной функции, поэтому для проверки подойдут любые варианты:
Напихать в /etc/resolv.conf несколько строк, в конце которых есть &quot;#kppp temp 
entry&quot; или #entry disabled by kppp&quot;.

; а вот в случае, когда именно при поднятом дайлапе надо вручную
&gt; поставить НС-ы и домен (возможно, для каждого аккаунта -- свои) -- да, 
пожалуй
&gt; что лучше оставить это звонилке.  Хотя случай ближе к гипотетическому -- кто
&gt; знает, что туда _разного_ писать, обычно имеет broadband и/или VPN, а кто не
&gt; знает -- для тех ISP без автомата давно вымерли.
&gt; 
&gt; Короче говоря, тестировал единственный оставшийся разумным случай, но не 
поняв,
&gt; что ты таки читаешь (а не пишешь) RESOLV_MODS.
&gt; 
&gt; OK, проверю при его значении &quot;no&quot; (возможно, в понедельник).
&gt; 
&gt; &gt; &gt; оставим на совести апстрима)
&gt; &gt; Это вплоть до Троллей можно раскрутить. Ничего страшного, в общем-то.
&gt; Где-то так и подумал, просто сейчас уже реже вижу (после каких-то иксов был
&gt; праздник &quot;плюются все&quot; ;).

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67155</commentid>
    <comment_count>24</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2008-03-31 19:10:50 +0400</bug_when>
    <thetext>Бум считать, что исправил</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67174</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-03-31 21:22:36 +0400</bug_when>
    <thetext>Ну давай посчитаем.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>