Discussion:
Cancel-Lock nach RFC 8315
(zu alt für eine Antwort)
Emil Schuster
2018-03-15 21:41:51 UTC
Permalink
Da hier der Autor des obigen RFCs mitliest, nehme ich mal an, dass er
bei diesem Subject hier reinschaut ;-)

Ich nehme an, dass folgender Header

Cancel-Lock: sha1:qe8DBXvNQFF3SEw0/Os7vnF4HpU=
09sha1:jyKHUsUSqw+dWbAoGGmmN+ZcG0g=

formal korrekt ist? 09 auf der zweiten Zeile ist ein TAB (\t), das kommt
vom copy + paste.

Ich habe nämlich meine Cancel/Supersede-Verarbeitung ändern müssen. So etwas
ist hier noch nie vorgekommen, zumindest ist es mir noch nie aufgefallen.

Mich tröstet, dass ich mindestens einen weiteren Server gefunden habe, der
diesen Cancel auch nicht verarbeitet hat...
--
Emil
Michael Bäuerle
2018-03-15 22:26:30 UTC
Permalink
Post by Emil Schuster
Da hier der Autor des obigen RFCs mitliest, nehme ich mal an, dass er
bei diesem Subject hier reinschaut ;-)
Ich nehme an, dass folgender Header
Cancel-Lock: sha1:qe8DBXvNQFF3SEw0/Os7vnF4HpU=
09sha1:jyKHUsUSqw+dWbAoGGmmN+ZcG0g=
formal korrekt ist? 09 auf der zweiten Zeile ist ein TAB (\t), das kommt
vom copy + paste.
Ja. Zwischen den "c-lock"-Elementen darf CFWS stehen (also Whitespace,
Faltung und Kommentare).

CFWS ist in RFC 5322 definiert:
<https://tools.ietf.org/html/rfc5322#section-3.2.2>
WSP wird in Kapitel 2 beschrieben:
|
| [...] as the space (SP, ASCII value 32) and horizontal tab (HTAB,
| ASCII value 9) characters (together known as the white space
| characters, WSP).

HTAB ist also Teil von WSP und darf damit auch in CFWS vorkommen.

BTW:
Das war auch in den 20 Jahre alten Drafts bereits erlaubt, in RFC 8315
hat sich diesbezüglich nur geändert, dass CFWS nun auch am Anfang
(zwischen Doppelpunkt und dem ersten "c-lock"-Element) stehen darf. Das
war in den alten Drafts verboten.
Post by Emil Schuster
Ich habe nämlich meine Cancel/Supersede-Verarbeitung ändern müssen. So etwas
ist hier noch nie vorgekommen, zumindest ist es mir noch nie aufgefallen.
Mich tröstet, dass ich mindestens einen weiteren Server gefunden habe, der
diesen Cancel auch nicht verarbeitet hat...
Ein konformer Parser ist auch wegen der Kommentare etwas kompliziert.
Beispiel:

Cancel-Lock: (RFC 8315) sha1:qe8DBXvNQFF3SEw0/Os7vnF4HpU=
( sha1:Argh!== \) sha1:jyKHUsUSqw+dWbAoGGmmN+ZcG0g= )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Die komplette zweite Zeile ist hier ein Kommentar und muss ignoriert
werden, auch der markierte Teil.
Emil Schuster
2018-03-15 22:46:47 UTC
Permalink
Michael Bäuerle wrote:
[...]
Post by Michael Bäuerle
Ein konformer Parser ist auch wegen der Kommentare etwas kompliziert.
Cancel-Lock: (RFC 8315) sha1:qe8DBXvNQFF3SEw0/Os7vnF4HpU=
( sha1:Argh!== \) sha1:jyKHUsUSqw+dWbAoGGmmN+ZcG0g= )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Die komplette zweite Zeile ist hier ein Kommentar und muss ignoriert
werden, auch der markierte Teil.
Das würde bei mir zum nächsten Fehler führen... Danke für die ausführlichen
Erläuterungen.
--
Emil
Michael Bäuerle
2018-04-22 17:50:10 UTC
Permalink
Post by Emil Schuster
[...]
Post by Michael Bäuerle
Ein konformer Parser ist auch wegen der Kommentare etwas kompliziert.
Cancel-Lock: (RFC 8315) sha1:qe8DBXvNQFF3SEw0/Os7vnF4HpU=
( sha1:Argh!== \) sha1:jyKHUsUSqw+dWbAoGGmmN+ZcG0g= )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Die komplette zweite Zeile ist hier ein Kommentar und muss ignoriert
werden, auch der markierte Teil.
Das würde bei mir zum nächsten Fehler führen... Danke für die ausführlichen
Erläuterungen.
Ich habe jetzt mal versucht so einen Parser zu schreiben:
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre3.tar.bz2>

Eigentlich sind es zwei Parser. Einer für den ganzen Header gemäß
RFC 5322: canlock-mhp. Der möchte einen kompletten Artikel oder
wenigstens einen Header mit Separator (Leerzeile) am Ende als Input
(CRLF-Zeilenumbrüche). Beispiel:
------------------------------------------------------------------------
$ <article.txt canlock-mhp -f "Cancel-Lock"
Cancel-Lock: sha256:+anNYPRC7ftMjoOopWl7keEPwYEpMiIBsJhF5Upjf5s= sha1:Ah05x380QpwuqBAXy3KsznKvz2Y=
------------------------------------------------------------------------
Heraus kommt das Headerfeld, das mit der Option "-f" angegeben wurde
(entfaltet und ohne Zeilenumbruch am Ende).

Das kann man dann direkt an den zweiten Parser verfüttern: canlock-hfp.
Der ist für die in RFC 8315 definierten Headerfelder. Beispiel:
------------------------------------------------------------------------
$ <article.txt canlock-mhp -f "Cancel-Lock" | canlock-hfp -n
Cancel-Lock:
sha256:+anNYPRC7ftMjoOopWl7keEPwYEpMiIBsJhF5Upjf5s=
sha1:Ah05x380QpwuqBAXy3KsznKvz2Y=
------------------------------------------------------------------------

Oder eben das zitierte Beispiel:
------------------------------------------------------------------------
$ printf "%s" 'Cancel-Lock: (RFC 8315) sha1:qe8DBXvNQFF3SEw0/Os7vnF4HpU= ( sha1:Argh!== \) sha1:jyKHUsUSqw+dWbAoGGmmN+ZcG0g= )' | canlock-hfp -n
Cancel-Lock:
sha1:qe8DBXvNQFF3SEw0/Os7vnF4HpU=
------------------------------------------------------------------------

Anderer syntaktisch korrekter Unfug:
------------------------------------------------------------------------
$ printf "%s" 'CaNCel-lOCk: (#/&%$&\(%)sha1:aaaaBBBBXX== md5:(\sha1:\\\\)sha3-256/512:XXXX(\Argh\)sha0:YYYY=)' | canlock-hfp -n
Cancel-Lock:
sha1:aaaaBBBBXX==
md5:
sha3-256/512:XXXX
------------------------------------------------------------------------

Wenn man stderr wegwirft, bekommt man eine Liste mit SP Separatoren.
Man pages werden beim Build erzeugt.
Emil Schuster
2018-04-23 07:48:25 UTC
Permalink
Post by Michael Bäuerle
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre3.tar.bz2>
Funktioniert alles bestens, sehr schön. Ich habe leider das Problem,
dass ich das in einem Perl-Exit aus INN brauche.

Jetzt brauche ich nur noch einen Perl-Crack, der mir das nötige perlxs
dazu schreibt... Meine eigenen Perl-Kenntnisse sind da überfordert :-(
--
Emil
Michael Bäuerle
2018-04-23 08:56:10 UTC
Permalink
Post by Emil Schuster
Post by Michael Bäuerle
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre3.tar.bz2>
Funktioniert alles bestens, sehr schön.
Mit <obs-c-key-string> gibt es noch Probleme:
|
| $ printf "%s" 'Cancel-Key: sha1:XXXXx' | canlock-hfp -n
| canlock-hfp: syntax error

Das ist aber syntaktisch korrekt.
Post by Emil Schuster
Ich habe leider das Problem,
dass ich das in einem Perl-Exit aus INN brauche.
Jetzt brauche ich nur noch einen Perl-Crack, der mir das nötige perlxs
dazu schreibt... Meine eigenen Perl-Kenntnisse sind da überfordert :-(
canlock-hp exportiert kein C-API. Um aus Perl ein externes Programm
aufzurufen sollte etwas wie system() reichen und kein XS nötig sein.
Emil Schuster
2018-04-23 10:12:53 UTC
Permalink
Post by Michael Bäuerle
Post by Emil Schuster
Ich habe leider das Problem,
dass ich das in einem Perl-Exit aus INN brauche.
Jetzt brauche ich nur noch einen Perl-Crack, der mir das nötige perlxs
dazu schreibt... Meine eigenen Perl-Kenntnisse sind da überfordert :-(
canlock-hp exportiert kein C-API. Um aus Perl ein externes Programm
aufzurufen sollte etwas wie system() reichen und kein XS nötig sein.
Das hört sich gut an. Das muss ich mir genauer anschauen, danke!
--
Emil
Emil Schuster
2018-04-23 11:43:20 UTC
Permalink
Post by Emil Schuster
Post by Michael Bäuerle
canlock-hp exportiert kein C-API. Um aus Perl ein externes Programm
aufzurufen sollte etwas wie system() reichen und kein XS nötig sein.
Das hört sich gut an. Das muss ich mir genauer anschauen, danke!
Ein Einzeiler und weil es so schön einfach war, auch gleich einer für
Cancel-Key, testen, produktiv setzen und fertig.

Nochmals vielen Dank! So muss das sein :-)
--
Emil
Michael Bäuerle
2018-04-23 12:08:26 UTC
Permalink
Post by Emil Schuster
Post by Emil Schuster
Post by Michael Bäuerle
canlock-hp exportiert kein C-API. Um aus Perl ein externes Programm
aufzurufen sollte etwas wie system() reichen und kein XS nötig sein.
Das hört sich gut an. Das muss ich mir genauer anschauen, danke!
Ein Einzeiler und weil es so schön einfach war, auch gleich einer für
Cancel-Key, testen, produktiv setzen und fertig.
Nochmals vielen Dank! So muss das sein :-)
Warte besser noch mit dem produktiv setzen, diese Test-Version ist dafür
noch nicht ausgereift genug.
Emil Schuster
2018-04-23 12:24:52 UTC
Permalink
Post by Michael Bäuerle
Post by Emil Schuster
Ein Einzeiler und weil es so schön einfach war, auch gleich einer für
Cancel-Key, testen, produktiv setzen und fertig.
Nochmals vielen Dank! So muss das sein :-)
Warte besser noch mit dem produktiv setzen, diese Test-Version ist dafür
noch nicht ausgereift genug.
Das habe ich bewusst schon gemacht, was soll da schon groß passieren...
Es ist allemal besser als das, was bisher lief. Errorhandling z.B. wird
auch nicht benötigt, im Zweifelsfall wird der Cancel halt nicht ausgeführt.

Es ist ja in der Praxis sogar so, dass 99,99... % aller diesbezüglichen
Header ohne jeden Schnörkel sind. Dass mir mal ein gefalteter Header über
den Weg gelaufen ist und ich es auch noch bemerkt habe, war eh so etwas
wie ein Lottogewinn. Ich behaupte mal frech, dass die meisten Server
diesen Cancel nicht verarbeitet hatten.
--
Emil
Michael Bäuerle
2018-04-23 13:14:11 UTC
Permalink
Post by Emil Schuster
Post by Michael Bäuerle
Post by Emil Schuster
Ein Einzeiler und weil es so schön einfach war, auch gleich einer für
Cancel-Key, testen, produktiv setzen und fertig.
Nochmals vielen Dank! So muss das sein :-)
Warte besser noch mit dem produktiv setzen, diese Test-Version ist dafür
noch nicht ausgereift genug.
Das habe ich bewusst schon gemacht, was soll da schon groß passieren...
Es ist allemal besser als das, was bisher lief. Errorhandling z.B. wird
auch nicht benötigt, im Zweifelsfall wird der Cancel halt nicht ausgeführt.
Es besteht ein gewisses Risiko, wenn der Parser fehlerhaft arbeiten
sollte. Mit den Daten im Headerfeld könnte man dann im worst-case den
Prozess des Parsers angreifen (und dann -- bei Erfolg -- irgendwas mit
dessen Rechten auf dem Server tun).

Bevor man fremde Daten an ein C-Programm verfüttert, sollte zumindest
das Speichermanagement einen Review gesehen haben. Ich werde die
Versionsnummer 0.0.0 vergeben, sobald das gemacht wurde.
Post by Emil Schuster
Es ist ja in der Praxis sogar so, dass 99,99... % aller diesbezüglichen
Header ohne jeden Schnörkel sind. Dass mir mal ein gefalteter Header über
den Weg gelaufen ist und ich es auch noch bemerkt habe, war eh so etwas
wie ein Lottogewinn. Ich behaupte mal frech, dass die meisten Server
diesen Cancel nicht verarbeitet hatten.
Das mag so stimmen. Aber "funktioniert meistens" ist nicht schön. Davon
gibt es bereits genug im Netz, sowohl auf Client-, wie auf Server-
Seite.

Es ist klar definiert was akzeptiert werden muss. Und das soll dann auch
akzeptiert werden.
Emil Schuster
2018-04-23 13:25:02 UTC
Permalink
Post by Michael Bäuerle
Es besteht ein gewisses Risiko, wenn der Parser fehlerhaft arbeiten
sollte. Mit den Daten im Headerfeld könnte man dann im worst-case den
Prozess des Parsers angreifen (und dann -- bei Erfolg -- irgendwas mit
dessen Rechten auf dem Server tun).
Bevor man fremde Daten an ein C-Programm verfüttert, sollte zumindest
das Speichermanagement einen Review gesehen haben. Ich werde die
Versionsnummer 0.0.0 vergeben, sobald das gemacht wurde.
Na gut, Du kannst das sicher besser beurteilen als ich. Dann mache ich das
wieder rückgängig, auf die Zeit bis zum Release kommt es sicher nicht an.
Post by Michael Bäuerle
Post by Emil Schuster
Es ist ja in der Praxis sogar so, dass 99,99... % aller diesbezüglichen
Header ohne jeden Schnörkel sind. Dass mir mal ein gefalteter Header über
den Weg gelaufen ist und ich es auch noch bemerkt habe, war eh so etwas
wie ein Lottogewinn. Ich behaupte mal frech, dass die meisten Server
diesen Cancel nicht verarbeitet hatten.
Das mag so stimmen. Aber "funktioniert meistens" ist nicht schön. Davon
gibt es bereits genug im Netz, sowohl auf Client-, wie auf Server-
Seite.
Es ist klar definiert was akzeptiert werden muss. Und das soll dann auch
akzeptiert werden.
Ja, deshalb möchte ich ja Deinen Parser einbauen.
--
Emil
Michael Bäuerle
2018-04-23 22:49:25 UTC
Permalink
Post by Emil Schuster
Post by Michael Bäuerle
Es besteht ein gewisses Risiko, wenn der Parser fehlerhaft arbeiten
sollte. Mit den Daten im Headerfeld könnte man dann im worst-case den
Prozess des Parsers angreifen (und dann -- bei Erfolg -- irgendwas mit
dessen Rechten auf dem Server tun).
Bevor man fremde Daten an ein C-Programm verfüttert, sollte zumindest
das Speichermanagement einen Review gesehen haben. Ich werde die
Versionsnummer 0.0.0 vergeben, sobald das gemacht wurde.
Na gut, Du kannst das sicher besser beurteilen als ich. Dann mache ich das
wieder rückgängig, auf die Zeit bis zum Release kommt es sicher nicht an.
Post by Michael Bäuerle
Post by Emil Schuster
Es ist ja in der Praxis sogar so, dass 99,99... % aller diesbezüglichen
Header ohne jeden Schnörkel sind. Dass mir mal ein gefalteter Header über
den Weg gelaufen ist und ich es auch noch bemerkt habe, war eh so etwas
wie ein Lottogewinn. Ich behaupte mal frech, dass die meisten Server
diesen Cancel nicht verarbeitet hatten.
Das mag so stimmen. Aber "funktioniert meistens" ist nicht schön. Davon
gibt es bereits genug im Netz, sowohl auf Client-, wie auf Server-
Seite.
Es ist klar definiert was akzeptiert werden muss. Und das soll dann auch
akzeptiert werden.
Ja, deshalb möchte ich ja Deinen Parser einbauen.
Immer noch für Testzwecke, aber nun fast fertig:
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre6.tar.bz2>

Die obsolete syntax von RFC 5322 und RFC 8315 sollte nun auch
funktionieren (inklusive NUL Steuerzeichen in Kommentaren).
Beispiel:
------------------------------------------------------------------------
$ printf "Cancel-kEy: (\134\0)%s\r\n\r\n" "sHa256:XXX==" | canlock-mhp -f "Cancel-Key" | canlock-hfp -n
Cancel-Key:
sha256:XXX==
------------------------------------------------------------------------
Emil Schuster
2018-04-24 07:57:59 UTC
Permalink
Post by Michael Bäuerle
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre6.tar.bz2>
Das geht aber schnell...
Post by Michael Bäuerle
Die obsolete syntax von RFC 5322 und RFC 8315 sollte nun auch
funktionieren (inklusive NUL Steuerzeichen in Kommentaren).
------------------------------------------------------------------------
$ printf "Cancel-kEy: (\134\0)%s\r\n\r\n" "sHa256:XXX==" | canlock-mhp -f "Cancel-Key" | canlock-hfp -n
sha256:XXX==
------------------------------------------------------------------------
Funktioniert hier prima:

|***@wieslauf:~$ printf "Cancel-kEy: (\134\0)%s\r\n\r\n" "sHa256:XXX==" | canlock-mhp -f "Cancel-Key" | canlock-hfp -n
| Cancel-Key:
| sha256:XXX==
--
Emil
Michael Bäuerle
2018-04-24 08:33:54 UTC
Permalink
Post by Emil Schuster
Post by Michael Bäuerle
[...]
Die obsolete syntax von RFC 5322 und RFC 8315 sollte nun auch
funktionieren (inklusive NUL Steuerzeichen in Kommentaren).
------------------------------------------------------------------------
$ printf "Cancel-kEy: (\134\0)%s\r\n\r\n" "sHa256:XXX==" | canlock-mhp -f "Cancel-Key" | canlock-hfp -n
sha256:XXX==
------------------------------------------------------------------------
| sha256:XXX==
Gut. Dann setze ich mal Xpost nach de.test und Fup2 hierher.
Falls dort jemand den Thread nicht gelesen haben sollte, hier nochmal
eine Zusammenfassung:
------------------------------------------------------------------------
Diese Headerparser (canlock-mhp und canlock-hfp) sind als Präprozessoren
für das canlock Frontend gedacht:
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre6.tar.bz2>
Ziel ist, dass sie RFC 5322 und RFC 8315 konforme Artikel verarbeiten
können. Gesucht ist daher konformer Input der nicht korrekt verarbeitet
wird.

Bei canlock-hfp kann man mit "-d" einen Debugmodus aktivieren, der zeigt
den internen Ablauf auf stderr an:
|
| $ printf "%s" 'Cancel-Lock: (*Bla*)sha256:ABCDab== (End)' | canlock-hfp -n -d
| Control: Init
| Control: Start data processing
| Lexer : Field name 'Cancel-Lock'
| Lexer : Colon ':'
| Lexer : Space ' '
| Lexer : Parenthesis '('
| Lexer : Ctext char '*'
| Lexer : Base64 char 'B'
| Lexer : Base64 char 'l'
| Lexer : Base64 char 'a'
| Lexer : Ctext char '*'
| Lexer : Parenthesis ')'
| Parser : <comment>
| Lexer : Scheme 'sha256'
| Parser : <cfws>
| Lexer : Colon ':'
| Lexer : Base64 quad 'ABCD'
| Lexer : Base64 char 'a'
| Lexer : Base64 char 'b'
| Lexer : Equal '='
| Lexer : Equal '='
| Parser : <c-lock-string>
| Parser : <c-lock>
| Lexer : Space ' '
| Lexer : Parenthesis '('
| Lexer : Base64 char 'E'
| Lexer : Base64 char 'n'
| Lexer : Base64 char 'd'
| Lexer : Parenthesis ')'
| Parser : <comment>
| Parser : <cfws>
| Parser : <c-lock-list>
| Parser : <cancel-lock>
| Parser : Print output data
| Parser : [Cancel-Lock: sha256:ABCDab==]
| Cancel-Lock:.
| sha256:ABCDab==
| Control: Success
------------------------------------------------------------------------

[Xpost nach de.test und Fup2 nach de.comm.software.newsserver]
Michael Bäuerle
2018-04-24 15:00:12 UTC
Permalink
Post by Michael Bäuerle
Bei canlock-hfp kann man mit "-d" einen Debugmodus aktivieren, der zeigt
|
| $ printf "%s" 'Cancel-Lock: (*Bla*)sha256:ABCDab== (End)' | canlock-hfp -n -d
| Control: Init
| Control: Start data processing
| [...]
Nicht wirklich ein Bug, aber hier stimmt die Debug-Anzeige noch nicht:
|
| $ printf "%s" 'Cancel-Lock: ' | canlock-hfp -d
| Control: Init
| Control: Start data processing
| Lexer : Field name 'Cancel-Lock'
| Lexer : Colon ':'
| Lexer : Space ' '

Das hier ist das nach dem Doppelpunkt vorgeschriebene SP [1].

| Lexer : Space ' '

Das ist das erste SP in CFWS in <c-lock-list> [1].

| Lexer : Space ' '
| Parser : <comment>
| Lexer : Space ' '
| Parser : <comment>

Jedes weitere angehängte SP wird dann angezeigt, als wenn die Rule für
<comment> angewendet würde. Das passiert aber nicht, da ist nur die
Anzeige falsch.

| Parser : <cfws>


__________________
[1] <https://tools.ietf.org/html/rfc8315#section-2.1>
Dennis Preiser
2018-04-24 17:30:52 UTC
Permalink
Post by Michael Bäuerle
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre6.tar.bz2>
| $ printf "%s" 'Cancel-Lock: (*Bla*)sha256:ABCDab== (End)' | canlock-hfp -n -d
[...]
Post by Michael Bäuerle
| Parser : [Cancel-Lock: sha256:ABCDab==]
| Cancel-Lock:.
^
Post by Michael Bäuerle
| sha256:ABCDab==
| Control: Success
Hast Du hier die pre6 benutzt? Bei mir ist dieser Punkt nicht vorhanden:

| Parser : [Cancel-Lock: sha256:ABCDab==]
| Cancel-Lock:
| sha256:ABCDab==
| Control: Success

Dennis
Michael Bäuerle
2018-04-24 20:37:50 UTC
Permalink
Post by Michael Bäuerle
Post by Michael Bäuerle
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0pre6.tar.bz2>
| $ printf "%s" 'Cancel-Lock: (*Bla*)sha256:ABCDab== (End)' | canlock-hfp -n -d
[...]
Post by Michael Bäuerle
| Parser : [Cancel-Lock: sha256:ABCDab==]
| Cancel-Lock:.
^
Post by Michael Bäuerle
| sha256:ABCDab==
| Control: Success
| Parser : [Cancel-Lock: sha256:ABCDab==]
| sha256:ABCDab==
| Control: Success
Die pre6 gibt mir da ein SP aus. Der Punkt ist vermutlich durch falsche
Benutzung des Editors bei mir entstanden: Der mcedit zeigt Whitespace am
Zeilenende mit Punkten an (bei Cut&Paste bekommt man dann was man sieht,
nicht was da im Source-File steht -- könnte man als Bug betrachten).

Das Leerzeichen kommt von "print_output_data()" in "util/hfp_parser.y".
Es soll da stehen, damit der Output so aussieht, wenn man nur stdout
betrachtet:
|
| $ printf "%s" 'Cancel-Lock: (*Bla*)sha256:ABCDab== (End)' | canlock-hfp -n 2>/dev/null
| Cancel-Lock: sha256:ABCDab==
^


BTW:
Ich habe noch verschiedene halblegale Sachen getestet, z.B. gefaltetes
Feld mit Zeilen nur aus Whitespace. Oder fehlendes SP nach dem Doppel-
punkt am Feldname. Gemäß RFC 5322 ist das legal und canlock-mhp nimmt
es auch an.
Womit canlock-mhp Probleme hat sind NUL-Steuerzeichen, die werden nun
duch SUB-Steuerzeichen ersetzt (ist auch in der man page dokumentiert).
Das ist nicht korrekt, aber für die Headerfelder aus RFC 8315 belanglos
(da darf NUL nur in obs-qp vorkommen). Der Aufwand das richtig zu be-
handeln steht in keinem Verhältnis zum Nutzen.
canlock-hfp kann dagegen sowohl mit NUL als auch SUB in obs-qp umgehen.

Speichermanagement habe ich auch geprüft: Neben einem Segfault (bei
leerem Kommentar) ist mir dabei nur noch ein harmloses Memory-Leak auf-
gefallen. Da kannst du gerne auch nochmal einen Blick drauf werfen,
falls du gerade zu viel Zeit hast ;-)
Michael Bäuerle
2018-04-28 11:02:56 UTC
Permalink
Post by Michael Bäuerle
[...]
Warte besser noch mit dem produktiv setzen, diese Test-Version ist dafür
noch nicht ausgereift genug.
Diese Version kannst du jetzt nehmen:
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0.tar.bz2>
Emil Schuster
2018-04-28 12:12:14 UTC
Permalink
Post by Michael Bäuerle
Post by Michael Bäuerle
[...]
Warte besser noch mit dem produktiv setzen, diese Test-Version ist dafür
noch nicht ausgereift genug.
<http://micha.freeshell.org/tmp/canlock-hp-0.0.0.tar.bz2>
Danke, die habe ich jetzt installiert.

Ich habe in de.test ein paar Artikel gepostet. Hier sind passende Cancel-Keys
dazu:

test1 canlock msgid <***@wieslauf.sub.de> sha1:S4PDx9K2n65JE0JeByw8t4EYcxQ=
test2 canlock msgid <***@wieslauf.sub.de> sha1:SAngQZ2MlZMeK/nWiQdEVt0hKAI=
test3 canlock msgid <***@wieslauf.sub.de> sha1:IWZXjzDqsAWAkG9YSbEN2lyODiw=

Wer möchte, kann diese Artikel zwecks Test canceln/superseden.

[xpost und fup2 de.test]
--
Emil
Loading...