sabor****@olive*****
sabor****@olive*****
2004年 1月 15日 (木) 17:01:22 JST
West @ Eastさん、こんにちは。 Pochyの開発をしております平中です。 ご連絡ありがとうございます。 > それはさておき、バグっぽいもの報告。 > > 長文メールや添付ファイルのついたメールを受信すると、高い確率で > 妙な場所に改行コード <CR><LF> が挿入されます。 もしよろしければ、具体的にどのような場所に挿入されたのかお教えいただけます と大変助かります。 > > ざっとソースを読んでみたのですが、Fetchmail.cpp の 334 - 336 行と > 345 - 347 行にある > > buf.TrimRight('\x0A'); > buf.TrimRight('\x0D'); > buf += "\x0D\x0A"; > > というあたりが怪しそう。 > # というか、ここ、何をやりたいのかわからない… これは\n->\r\nを意図したものです。 ご指摘頂いている通り、ここの実装は何をやりたいのかわからないぐらいショボイ 実装でして改善の余地は多分にあります。 > # 改行コード変換なら、通常 SMTP では <CR><LF> で送られることに > # なってるから不要じゃないかと思うし。 仰るとおり、全てのメールの改行コードが\r\nになっていれば問題はないのですが、 一部の実装ではマルチパートの部分の改行コードが"\n"や"\r"だったりすることも あり、厳格なsmtpサーバー以外はそれを中継するようです。 内部処理的にはすべて\r\nを前提にして行っていますので、のちのちめんどくさい ことにならないように、ここで変換しているのですが、これが原因かもしれません。 また、 改行が挿入される問題については、winsockのMSG_PEEK辺りにも問題がある可能 性が高いと思ってまして、現在MSG_PEEKを使わない実装を模索している最中です。