Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 26719bf9ce1afc962d246dc88d8d8792 > files > 6

reisersmtp-0.2.8-3mdk.i586.rpm

**** VERIFIER SI QMAIL-STMPD AJOUTE UN "." DANS LE FICHIER SPOOLE OU PAS ****

On crée dans reisermess/xxx (tester si ça doit etre splitté ou non)

xxx est composé de : <message> <0> <0> u<uid> <0> p<pid> <0> <F>from <0>
<T>to <0> <len> RsrSmTp0

puis un lien dans reisertodo/xxx (idem)

lsmtp-fsck :

- On regarde tout ce qui se trouve dans reisermess pour voir
s'il existe aussi un lien dans reisertodo.
- Si ce n'est pas le cas, on check les fichiers pour voir s'ils sont
complets :
  . On check RsrSmTp0
  . puis <len> et si <0> <0> <u> s'y trouve bien
  . Si on est parano, on peut aussi checker \n.\n avant
- S'il s'agit d'un fichier valide : lien dans reisertodo
- S'il y a un intd, et un message valide, on vire l'intd [label1]
- Si le fichier n'est pas valide, on vérifie si on a pas foiré à [label2] :
intd crée, mais message toujours dans reisertodo. Dans ce cas, il faut
retrouver les deux zéros de la fin et placer l'intd après, puis virer le
fichier intd.
- Si le fichier est à la fois dans mess et dans reisermess, on s'est planté
en [label3] ou [label4]. Pour revenir avant, on vire le lien dans mess, on recrée le
message d'après l'intd.
- S'il ya à la fois un reisertodo et un todo, on s'est planté en label5. On
vire le todo et on passe à l'étape précédente.

  
lsmtp-send

On regarde tout ce qui se trouve dans reisertodo et pour chaque fichier ;
- On vérifie le trailer (RsrSmTp0), on récupère l'intd.
[vérifier ce qu'il se passe en cas de crash ici]
- On copie l'intd dans le répertoire intd, fsync
[label1]
- On ftruncate() le message, pas de fsync.
[label2]
- On fait un lien dans mess
[label3]
- On fait un lien dans todo
[label4]
- On retire le reisertodo
[label5]