前回、課題をのせましたが、もうちょっと詳細に問題が見えてきました。
1)SSL/TLSへの対応
この問題の一部で、SecureSocketを使ってgmailの465(いわゆる smtp over ssl )につないだときに、なぜか今まで接続に失敗することがあった。
実はこれ、私が明示的に作っていたタイムアウトで切断されていだけでした。
たとえば、SMTP over SSLが必須にも関わらず、通常のプレーンなSocketでつないでしまった場合も考えて、
接続に成功しても、220のステータスがある時間(デフォルトで5秒) 帰ってこなければエラーにしていたのですが、gmailだと接続に時間がかかるときがあるらしく、
この制限に引っかかってしまっていました。
まさかそんなにかからないと思っていたので、疑ってもいませんでした。(とほほ・・・)
あと、その設定を変えられるようにしていませんでした。
なので、この制限のデフォルトを伸ばすこと(10秒)と、設定を変更できるようにします。
2)大きな添付ファイルなどをつけた時に遅いこと。
こちら、以前はBase64が遅いといいましたが、こちらもおそいのですが、
それ以上に、SecureSocketのflush()メソッドが遅いことがわかりました。
実際 800kのファイルを添付するのに、私のPCで1秒弱かかっていますが、それをBase64したあとに、
writeUTFBytes()して、flush()するのですが、
このflush()だけで、8秒弱かかっています。
ただし、原因はわかりません。ネットワークの上りがおそいのでしょうか?
それとも、大きなデータを一括でflush()してはいけないのでしょうか?(といってもそれほど大きくないともおもうが・・・)
ただ、この8秒という時間が、「応答なし」という状態を作ってしまうのはちょっといただけないなと。
このあたりを修正して、近いうちにバージョン 0.6としてアップできればと思います。


