forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.HUSKY

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 06.11.2021, 21:22
Nil A
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Nil A написал(а) к All в Nov 21 20:03:20 по местному времени:

Нello, All!

Race condition в функции openPktForAppending()

if(fexist(fileName))
{
if((pkt = fopen(fileName, "r+b")) == NULL)
...

Правильнее всего сделать цикл, попытаться открыть с OCREATE|O_EXCL, если вернулся EEXIST, то открывать на чтение, если чтение вернуло ENOENT, значит надо снова пытвться O_CREATE|OEXCL, любые другие ошибки походу - выход с ошибкой.

Геморой в том, что похожие проверки нужно написать и не для POSIX систем, например, винды с её похожими API.
К сожаление fopen() из libc такой гибкостью не обладает.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #2  
Старый 06.11.2021, 22:33
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Michael Dukelsky написал(а) к Nil A в Nov 21 21:21:20 по местному времени:

Привет, Nil!

06 November 2021 20:03, Nil A послал(а) письмо к All:

NA> Race condition в функции openPktForAppending()

NA> if(fexist(fileName))
NA> {
NA> if((pkt = fopen(fileName, "r+b")) == NULL)
NA> ...

NA> Правильнее всего сделать цикл, попытаться открыть с OCREATE|OEXCL,
NA> если вернулся EEXIST, то открывать на чтение, если чтение вернуло
NA> ENOENT, значит надо снова пытвться OCREATE|OEXCL, любые другие
NA> ошибки походу - выход с ошибкой.

NA> Геморой в том, что похожие проверки нужно написать и не для POSIX
NA> систем, например, винды с её похожими API. К сожаление fopen() из libc
NA> такой гибкостью не обладает.

Пиши pull request.

Желаю успехов, Nil!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
Ответить с цитированием
  #3  
Старый 06.11.2021, 22:53
Nil A
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Nil A написал(а) к Michael Dukelsky в Nov 21 21:41:58 по местному времени:

Нello, Michael!

Saturday November 06 2021 21:21, from Michael Dukelsky -> Nil A:

NA>> Race condition в функции openPktForAppending()
MD> Пиши pull request.

Дык лениво же. Я иногда, по желанию, что-то беру и пишу для фидошки. Обычно просто FTSC документов не хватает для понимания, и я иду читать референсную имплементацию в husky, binkd, etc. Ответ на свой вопрос из сорцов я получаю, а вот ещё походу могу код ревтьюировать. Есть ли у меня желание его ковырять? Так себе код, выправлять его мне не хочется, по эстетическим соображениям.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #4  
Старый 07.11.2021, 00:41
Sergey Anohin
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Sergey Anohin написал(а) к Nil A в Nov 21 23:37:15 по местному времени:

Нello, Nil!

NA> Дык лениво же. Я иногда, по желанию, что-то беру и пишу для фидошки. Обычно просто FTSC документов не хватает для понимания, и я иду читать референсную имплементацию в husky, binkd, etc. Ответ на свой вопрос из сорцов я получаю, а вот ещё походу могу код ревтьюировать. Есть ли у меня желание его ковырять? Так себе код, выправлять его мне не хочется, по эстетическим соображениям.

Можно ещё юзать hpt post и не юзать txt2pkt

С наилучшими пожеланиями, Sergey Anohin.

--- wfido
Ответить с цитированием
  #5  
Старый 07.11.2021, 02:02
Nil A
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Nil A написал(а) к Sergey Anohin в Nov 21 00:56:50 по местному времени:

Нello, Sergey!

Saturday November 06 2021 23:37, from Sergey Anohin -> Nil A:

SA> Можно ещё юзать hpt post и не юзать txt2pkt

Кстати, интересная мысль.
Посмотрел, отличия hpt post в том, что он не делает промежуточной .pkt, а сразу обрабатывает, как будто это он тоссит, т.е. сразу в базу положит и на линков раскидает (-x опция).

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #6  
Старый 07.11.2021, 02:32
Sergey Anohin
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Sergey Anohin написал(а) к Nil A в Nov 21 01:25:40 по местному времени:

Нello, Nil!

NA> Кстати, интересная мысль.
NA> Посмотрел, отличия hpt post в том, что он не делает промежуточной .pkt, а сразу обрабатывает, как будто это он тоссит, т.е. сразу в базу положит и на линков раскидает (-x опция).

У меня роботы спамят так по крону, работает вроде без нареканий, скармливается текст из файла

С наилучшими пожеланиями, Sergey Anohin.

--- wfido
Ответить с цитированием
  #7  
Старый 07.11.2021, 03:02
Nil A
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Nil A написал(а) к Sergey Anohin в Nov 21 01:46:40 по местному времени:

Нello, Sergey!

Sunday November 07 2021 01:25, from Sergey Anohin -> Nil A:

NA>> Посмотрел, отличия hpt post в том, что он не делает промежуточной
NA>> .pkt, а сразу обрабатывает, как будто это он тоссит, т.е. сразу в
NA>> базу положит и на линков раскидает (-x опция).

SA> У меня роботы спамят так по крону, работает вроде без нареканий,
SA> скармливается текст из файла

Интересно, почему традиционно все эти fido.dayly и fido.monthly скрипты, из fidoip, за копирайтом 2007-2012 Maxim Sokolsky, 2:5020/828.777 работают через txt2pkt ?

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #8  
Старый 07.11.2021, 04:02
Alexey Vissarionov
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Alexey Vissarionov написал(а) к Nil A в Nov 21 02:51:20 по местному времени:

Доброго времени суток, Nil!
06 Nov 2021 20:03:20, ты -> All:

NA> Race condition в функции openPktForAppending()
NA> if(fexist(fileName))
NA> {
NA> if((pkt = fopen(fileName, "r+b")) == NULL)
NA> ...
NA> Правильнее всего сделать цикл, попытаться открыть с OCREATE|OEXCL,
NA> если вернулся EEXIST, то открывать на чтение, если чтение вернуло
NA> ENOENT, значит надо снова пытвться OCREATE|OEXCL, любые другие
NA> ошибки походу - выход с ошибкой.
NA> Геморой в том, что похожие проверки нужно написать и не для POSIX
NA> систем, например, винды с её похожими API. К сожаление fopen() из
NA> libc такой гибкостью не обладает.

man fdopen

Если, конечно, он там действительно нужен.


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Лотерея (сущ.): форма налога на незнание теории вероятности
--- /bin/vi
Ответить с цитированием
  #9  
Старый 07.11.2021, 04:11
Alexey Vissarionov
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Alexey Vissarionov написал(а) к Nil A в Nov 21 02:56:56 по местному времени:

Доброго времени суток, Nil!
07 Nov 2021 01:46:40, ты -> Sergey Anohin:

NA>>> Посмотрел, отличия hpt post в том, что он не делает промежуточной
NA>>> .pkt, а сразу обрабатывает, как будто это он тоссит, т.е. сразу в
NA>>> базу положит и на линков раскидает (-x опция).
SA>> У меня роботы спамят так по крону, работает вроде без нареканий,
SA>> скармливается текст из файла
NA> Интересно, почему традиционно все эти fido.dayly и fido.monthly
NA> скрипты, из fidoip, за копирайтом 2007-2012 Maxim Sokolsky,
NA> 2:5020/828.777 работают через txt2pkt ?

Потому что автор этих скриптов - дурак, и не думал, когда копировал методы использования txt2pkt из скриптов тех людей, которые действительно умеют им пользоваться.


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Время выхода из лабиринта зависит от количества извилин
--- /bin/vi
Ответить с цитированием
  #10  
Старый 07.11.2021, 09:32
Nil A
Guest
 
Сообщений: n/a
По умолчанию src/pktwrite.c: openPktForAppending - race condition

Nil A написал(а) к Alexey Vissarionov в Nov 21 08:21:20 по местному времени:

Нello, Alexey!

Sunday November 07 2021 02:56, from Alexey Vissarionov -> Nil A:

NA>> Интересно, почему традиционно все эти fido.dayly и fido.monthly
NA>> скрипты, из fidoip, за копирайтом 2007-2012 Maxim Sokolsky,
NA>> 2:5020/828.777 работают через txt2pkt ?

AV> Потому что автор этих скриптов - дурак, и не думал, когда копировал
AV> методы использования txt2pkt из скриптов тех людей, которые
AV> действительно умеют им пользоваться.

Самое смешное, что если посмотреть на TID/PID писем, например, фидонет.тудей ежедневный робот постит и прочие, то можно там везде увидить txt2pkt.
Короче, это какой-то стандарт-де-факто уже для постинья в эхи, а не hpt post.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:01. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot