[Mew-dist 12242] Re: im-13[5-7] imput error
SAKAI Kiyotaka
ksakai at example.com
2000年 2月 4日 (金) 09:43:38 JST
>> In article <200002031201.VAA24936 at example.com>, Koyama Mituru <mkoya at example.com> writes:
> メッセージが出力され続けるということは、システムライブラリから戻っ
> て来ないわけではなく、エラーが返ってきたとき、IMでリトライが無限に
> 繰り返されているのだと思うのですが、うーむ、私にはどこがどうなって
> いるのかつかめません。
これで分かりました。
smtp_transaction() → smtp_transact_sub() → smtp_open()
→ connect_server()
という順序で関数が呼び出されていますが、connect_server() で接続が失敗
したときは smtp_transaction() 内で $#$servers >=0 の間は do ループが周
るようになっています。
この @$servers は connect_server() 内で shift することで 1要素ずつ減っ
ていくはずなのですが、最近のバージョンでは foreach に置き換わっていた
ため、@$servers の値が変更されずにループが周り続けることになっていまし
た。
以下のパッチで、以前のバージョンのように while + shift に戻せば直るか
と思います。
--
酒井 清隆 (E-mail: ksakai at example.com)
-------------- next part --------------
Index: TcpTransaction.pm
===================================================================
RCS file: /home/ksakai/cvsroot/im-137/IM/TcpTransaction.pm,v
retrieving revision 1.2
diff -u -r1.2 TcpTransaction.pm
--- TcpTransaction.pm 2000/02/04 00:34:29 1.2
+++ TcpTransaction.pm 2000/02/04 00:34:44
@@ -79,7 +79,7 @@
@Response = ();
my (@he_infos);
my ($s, $localport, $remoteport);
- foreach $s (@$servers) {
+ while ($s = shift(@$servers)) {
$Cur_server_original_form = $s;
my ($r) = ($#$servers >= 0) ? 'skipped' : 'failed';
# manage server[/remoteport]%localport
Mew-dist メーリングリストの案内