|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Andrey Slusar 2:467/126 12 May 2004 18:18:55 To : Eugene B. Berdnikov Subject : Re: ASP9.2 - upgrade -------------------------------------------------------------------------------- Wed, 12 May 2004 16:03:28 +0300, Eugene B. Berdnikov wrote to Vladimir Mosgalin: PI>>> Мoжет вoзникнуть пpoблема, если на небoльшoм oтpезке вpемени в эхе PI>>> oкажутся письма с oдинакoвыми MSGID, а этo oбязательнo случится, PI>>> если мнoгие настpoят этoгo гада так же, как ты. Даже, навеpнoе, с VM>> VM>> Так мой msgid для предыдущего письма VM>> MSGID_2=3A5030=2F1041.17_00000df8@fidonet.org EBB> В демосовском пуле предыдущее письмо имеет id EBB> <3576@p17.f1041.n5030.z2.ftn>. И в этом постинге аналогичный, только EBB> номер@ другой. VM>> Так что все работает правильно. EBB> Причина скорей всего в кривом транзитном гейте. 2VM: Это проблема 4-го fidogate-а. Он неправильно делает fido-style msgid. Вот патч, который я когда-то думал послать автору: --8<---------------cut here---------------start------------->8--- -+- fgate4.old/src/common/msgid.c Sun Feb 8 02:49:21 2004 +++ fgate4/src/common/msgid.c Fri Feb 13 04:56:36 2004 @@ -255,7 +255,8 @@ * Convert RFC Message-ID/References to FIDO ^AMSGID/^AREPLY */ char *s_msgid_rfc_to_fido(int *origid_flag, char *message_id, - int part, int split, char *area) + int part, int split, char *area, + short int x_flags_m, int for_reply) /* origid_flag - Flag for ^AORIGID */ /* message_id - Original RFC-ID */ /* part - part number */ @@ -391,10 +392,19 @@ crc32 += part - 1; tmps = tmps_alloc(strlen(id)+1+/**Extra**/20); + if(!x_flags_m) + { msgid_fts9_quote(tmps->s, id, tmps->len); str_printf(tmps->s + strlen(tmps->s), tmps->len - strlen(tmps->s), - " %08lx", crc32); - + " %08lx", crc32); + } + else + { + if(for_reply) + str_printf(tmps->s, strlen(tmps->s)+strlen(id)+2, "%s ", id); + str_printf(tmps->s + strlen(tmps->s), tmps->len - strlen(tmps->s), + "%08lx", crc32); + } xfree(savep); if(origid_flag) *origid_flag = TRUE; -+- fgate4.old/src/include/prototypes.h Fri Feb 13 05:37:17 2004 +++ fgate4/src/include/prototypes.h Fri Feb 13 05:39:13 2004 @@ -382,7 +382,7 @@ /* msgid.c */ char *s_msgid_fido_to_rfc (char *, int *); char *s_msgid_default (Message *); -char *s_msgid_rfc_to_fido (int *, char *, int, int, char *); +char *s_msgid_rfc_to_fido (int *, char *, int, int, char *, short int, int); char *s_msgid_convert_origid (char *, int); /* node.c */ -+- fgate4.old/src/gate/rfc2ftn.c Fri Feb 13 05:00:41 2004 +++ fgate4/src/gate/rfc2ftn.c Fri Feb 13 05:34:35 2004 @@ -1378,30 +1378,29 @@ /***** ^A kludges *******************************************************/ /* Add kludges for MSGID / REPLY */ - if(!x_flags_m) /* ! X-Flags: m */ + if((header = s_header_getcomplete("Message-ID"))) { - if((header = s_header_getcomplete("Message-ID"))) + if((id = s_msgid_rfc_to_fido(&flag, header, + part, split, msg->area, x_flags_m, 0))) { - if((id = s_msgid_rfc_to_fido(&flag, header, - part, split, msg->area))) - { - fprintf(sf, "\001MSGID: %s\r\n", id); - } - } + if(!x_flags_m) /* ! X-Flags: m */ + fprintf(sf, "\001MSGID: %s\r\n", id); else + fprintf(sf, "\001MSGID: %s %s\r\n", znfp1(&msg->node_from), id); + } + } + else print_local_msgid(sf, node_from); if((header = s_header_getcomplete("References")) || (header = s_header_getcomplete("In-Reply-To"))) { - if((id = s_msgid_rfc_to_fido(&flag, header, 0, 0, msg->area))) + if((id = s_msgid_rfc_to_fido(&flag, header, 0, 0, msg->area, + x_flags_m, 1))) { fprintf(sf, "\001REPLY: %s\r\n", id); } } - } - else - print_local_msgid(sf, node_from); if(!no_fsc_0035) if(!x_flags_n) --8<---------------cut here---------------end--------------->8--- Дело в том, что 4-й f-gate при fido style msgid или Xflags:m(видимо у VM стоит Xflags:m) и 5-й оригинальный(до 5b7) при постинге более чем в одну группу(например, карбон) пользуется не совсем оптимальным алгоритмом генерации serialno, из-за чего случаются перлы вида 00000001, 000000005 и т.п. Этот патч заставляет оригинальный fgate при Xflags: m формировать serialno из Message-ID оригиальной мессаги, что намного понижает вероятность формирования одинаковых serialno. -- Всего хорошего. Андрей. XMMS: 05-Vzgljad_s_Ekrana --- Gnus/5.110003 (No Gnus v0.3) XEmacs/21.4 (Security Through Obscurity) * Origin: Santinel at fido (2:467/126) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/2749a984513a.html, оценка из 5, голосов 10
|