[Mew-dist 11283] Re: IM queue frash 時に connection error した場合の処理について

SAKAI Kiyotaka ksakai at example.com
1999年 11月 12日 (金) 19:58:24 JST


>> In article <19991112185052E.nin at example.com>, Ninomiya Hideyuki <nin at example.com> writes:

> IM/TcpTransaction.pm で
> sub connect_server ($$$){
> ....
>     $SIG{'ALRM'} = \&alarm_func;
> ....
>     alrm(dns_timeout())....
> }

> sub alarm_func {
>     im_die("connection error\n");
> }

> こんなんなってるので、ここで強制終了してるんだと思うのですが、
> queue/1 -> queue/1.wrk
> とリネームされたままになっちゃう事が原因だという事までは何とか解りました。

> imput の process_queue の方で対処するのが、修正箇所が小さくて済むという
> 事では良いと思います。しかし、コードとにらめっこしてみたのですが、良いア
> イデアが浮かびません。そもそも、queue/1 -> queue/1.wrk にリネームする事
> が必要なのかもちょっと疑問に思うのですが、その辺いかがなもんなのでしょう
> か ?

こういった場合、該当する関数呼び出しを eval() 経由で実行するとその部分
では落ちなくなりますので、eval() の戻り値を見て処理を切り換えてやるの
がいいと思います。

具体的なテクニックについては、man perlfunc が参考になるかと思います。
-- 
酒井 清隆 (E-mail: ksakai at example.com)



Mew-dist メーリングリストの案内