Тема: .try
Показать сообщение отдельно
  #7  
Старый 07.06.2022, 17:42
Sergey Zabolotny
Guest
 
Сообщений: n/a
По умолчанию .try

Sergey Zabolotny написал(а) к Pavel Gulchouck в Jun 22 16:31:16 по местному времени:

Нello Pavel.

Tuesday 07 June 2022 16:07, Sergey Zabolotny wrote to Pavel Gulchouck:

PG>>> В общем, да, там есть счётчик последовательных успешных попролов
PG>>> ноды, и этот счётчик никак не используется. Сделано это было до
PG>>> 1998, в версии 0.8.8. Пожалуй, можно и удалять после успешной
PG>>> сессии, если мешают. Это функция good_try() в ftnq.c.
SZ>> я не специалист в сях, так что не судите слишком строго. у меня
SZ>> получилось примерно так: $ git diff diff --git a/ftnq.c b/ftnq.c
SZ>> index f1a78a2..3e2dfdd 100644 -+- a/ftnq.c
SZ> поспешил я с выводами на счет косяков. есть как минимум один -
SZ> пытается удалять файл, которого не существует. надо добавить проверку
SZ> на существование файла.
так правильнее будет:

diff --git a/ftnq.c b/ftnq.c
index f1a78a2..022f2ea 100644
-+- a/ftnq.c
+++ b/ftnq.c
@@ -1120,13 +1120,16 @@ void badtry (FTN_ADDR fa, const char *error, const int where, BINKDCONFIG co
write_try (fa, &nok, &nbad, (char *) error, config);
}

-void goodtry (FTN_ADDR fa, char *comment, BINKDCONFIG config)
+void removetry (FTN_ADDR fa, BINKDCONFIG config)
{
- unsigned nok, nbad;
-
if (config->tries == 0) return;
- read_try (fa, &nok, &nbad, config);
- nbad = 0;
- ++nok;
- write_try (fa, &nok, &nbad, comment, config);
+ char buf[MAXPATНLEN + 1];
+ ftnaddresstofilename (buf, fa, config);
+ if (*buf)
+ {
+ strnzcat (buf, ".try", sizeof (buf));
+ struct stat sb;
+ if (stat(buf, &sb) == -1) return;
+ delete (buf);
+ }
}
diff --git a/ftnq.h b/ftnq.h
index e399d91..cceb77d 100644
-+- a/ftnq.h
+++ b/ftnq.h
@@ -110,8 +110,8 @@ enum badtry_type { BAD_NA, BAD_CALL, BAD_MERR, BAD_MBSY, BAD_IO, BADTIMEOUT,
BADAKA, BADAUTН };

void badtry (FTN_ADDR fa, const char *error, const int where, BINKDCONFIG config);
-void goodtry (FTN_ADDR fa, char *comment, BINKDCONFIG config);
void readtry (FTN_ADDR fa, unsigned *nok, unsigned *nbad, BINKDCONFIG config);
void writetry (FTN_ADDR fa, unsigned *nok, unsigned *nbad, char *comment, BINKDCONFIG config);
+void removetry (FTN_ADDR fa, BINKDCONFIG config);

#endif
diff --git a/protocol.c b/protocol.c
index 677cb44..6d40bea 100644
-+- a/protocol.c
+++ b/protocol.c
@@ -3440,7 +3440,7 @@ void protocol (SOCKET socketin, SOCKET socket_out, FTN_NODE to, FTNADDR fa,
processkilllist (state.killlist, state.nkilllist, 's');
inbremovepartial (&state, config);
if (to)
- good_try (&to->fa, "CONNECT/BND", config);
+ remove_try (&to->fa, config);
}
else
{


--- GoldED+ 1.1.5-031023 (WinNT 5.1.2600-ServicePack3 i1586)
Ответить с цитированием