|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Solar Designer 2:5020/400 23 Jun 2001 17:17:37 To : All Subject : Re: popa3d & flock & deliver -------------------------------------------------------------------------------- Maxim Timofeyev <Maxim.Timofeyev@p1.f1763.n5030.z2.fidonet.org> wrote: > А в чем глубокий смысл делать flock только во время изменений? (Hе только во время изменений, но и shared лок во время чтения.) Ровно в том чтобы доставка работала даже во время открытой POP3 сессии (или, не ограничиваясь данным примером, запущенного mutt и т.п.). > Писал я тут deliver, проверяю flock'ом LOCK_EX и все равно deliver > доставляет почту, даже когда popa3d читает ящик... Пришлось > позакомментаривать LOCK_UN везде и вставить в mailbox_close(). > Теперь хотя бы deliver ожидает когда же там ящик освободят. В чем нет ничего хорошего. Вот накопится сотня таких deliver'ов. И еще ничего если только одна. А работа MUA заключается в том числе в том чтобы разобраться что же там изменилось в ящике пока лок был снят (разумеется, _перед_ такой проверкой лок должен быть получен заново). Кстати, на Linux'ах все-таки fcntl-локинг ящиков более "стандартен", чем flock. То что в popa3d-0.4 поддерживался только flock нехорошо с моей стороны. Hе собирался я оставлять ту версию последней так долго. Сейчас советую ориентироваться на 0.4.9.x, за которыми последует 0.5. > P.S. Кстати что лучше: ожидать, пока снимут lock или же сразу отваливаться с > EX_TEMPFAIL (для sendmail'а) например (перепосылает sendmail данное сообщение > в этом случае)? Типичный подход -- ожидать, но не дольше чем некоторый таймаут. > Есть еще вопросик по deliver'у: > Как между собой делить сообщения в mailbox'е? Что по этому поводу почитать? Пустой строкой перед "From " + выставлять правильный Content-Length (если для полученного от MTA это почему-то не так) + escape'ить уже имеющиеся в сообщении "From "'ы. > Я ставлю '\n', вроде работает. Правда popa3d добавляет в конце сообщения из-за > этого лишний '\n'. Это правильно? Hесовсем. Это из желания работать с ящиками где после последнего сообщения пустой строки нет и нежелания обрабатывать этот случай отдельно. Поправлю. Спасибо. -- /sd --- ifmail v.2.15dev5 * Origin: DataForce ISP (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/187864f02a998.html, оценка из 5, голосов 10
|