[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
1999/08/20 07:44 from msyk
Title: [teenbbs:0371] Re:368)EMVIEW v1.06 & EMCUT v1.01

No.   : 371
Sender: msyk
URL   : 
Title : Re:368)EMVIEW v1.06 & EMCUT v1.01

>関数の問題というよりも、どちらもメールファイル読み込み時のバッファサイズ
>が 256 バイトしか確保していないので、それが原因かと思います。 (^^;

なるほど, バッファ・サイズの問題でしたか.
ちょうど 255 バイトで不具合が発生するというところで気が付くのかも
しれませんが, プログラムの作れない私には全然分かりませんでした.

>static char buf[512];
>
>にして実行ファイルを作成してみて動作確認してみて頂けますでしょうか?

やってみましたが, 確かに正常に動作しました.

>バッファサイズの 256 という数字に根拠はないんです。 幸か不幸かそんなに長
>いヘッダを持ったメールを受信したことがないのでこの程度で大丈夫だろうとい
>うことで 256 にしていました。

RFC を調べてみても 1 フィールドというか 1 行の長さの制限があるのか
ないのかはっきりしませんでしたが, もしかしたら CRLF を含めて 1,000
バイトかもしれません.

私の場合は Received: フィールドが原因でしたが, これは 200 バイト
くらいになることは珍しくないようです.

しかしこういった長いフィールドの場合は 65 から 72 バイトで fold
するように RFC では推奨されているようなので, これが守られていれば
1 行が 255 バイトもあるなんてことはあり得ないはずなんですけどね.

RFC には 1 フィールド内で 65 から 72 バイトを超える場合はそこで
CRLF で折り返し, 次の行の先頭を 1 個以上のスペース (¥0x20) か
タブ (¥0x09) で始めて続きを記述していくと記載されています.

>EMCUT、EMVIEW 共に次版ではバッファサイズを拡大しますが、どの程度必要でし
>ょうか? 512 バイトあれば間に合うでしょうか?

バッファ・サイズの拡大では本質的な解決にはならないのかもしれませんが,
現実的には 512 バイトもあれば大丈夫ではないでしょうか.

#To: フィールドに 20 名くらい書き連ね, おまけに日本語まで使っていて,
#1 フィールドが 1K バイトもあるようなメイルを友人から何度かもらっています(^^;

[レスを書く]