Movable Type 3.3のコメント投稿の不具合

当Blogのリニューアル作業を行っていますが、新Blogでは、コメントスパム防止のために、小川宏高氏作の「Captcha」というプラグインを利用します。
このプラグインのテストをしていたときに、Movable Type 3.3のコメント投稿機能に、不具合と思われる点を見つけました。

Movable Typeでは、コメント投稿時に「Typekey」というIDを使って認証を行うことができます。
「Typekeyを使わないで投稿されたコメントは保留する」など、スパム対策などに利用することができます。

各エントリーのコメント入力フォームで、Typekeyログインしてコメントを書き、直接に投稿した場合は、問題はありません。
しかし、コメントをプレビューしてから投稿すると、問題が起こりました。
Captchaプラグインを入れた場合、コメントプレビューして投稿すると、Captchaのテストでエラーになり、Typekeyからログオフした状態になりました。
また、Captchaプラグインを使わないと、コメントをプレビューしてから投稿すると、Typekeyの情報が外れた状態でコメントが投稿され、Typekeyからログオフした状態になりました。

MTのソースを見てみると、App/Comments.pmの中の「_get_commenter_session」という処理で、Typekeyログインのチェックが行われています。
MT3.2とMT3.3でこの部分が若干異なっていて、それが原因で上で書いたような現象が起こっています。

問題の箇所は、MT3.3のApp/Comments.pmの80~82行目です(以下のリスト)。

if (!$sess_obj || ($sess_obj->start() + $timeout < time)
     || ($q->param('email') && ($sess_obj->email ne $q->param('email')))
     || ($q->param('author') && ($sess_obj->name ne $q->param('author'))))

この部分のソースを、以下のように書き換えてMT3.2と同じにすると、上の現象がなくなりました。

if (!$sess_obj || ($sess_obj->start() + $timeout < time))

この件はシックス・アパートにフィードバックしておきました。