[mew-dist 25501] Re: SMTP error handling
Kazu Yamamoto ( 山本和彦 )
kazu at example.com
2004年 10月 20日 (水) 10:05:06 JST
> それは変だ。NetBSD のせいかい。
いえ。Emacs のせいです。
Emacs は alarm() を設定して connect() します。
connect() に時間がかかった場合、EINTR が返ります。
同じソケットで再び connect() とすると、
FreeBSD は EADDRINUSE、NetBSD は EALREADY を返します。
Emacs が NetBSD に対応できていないだけですね。という訳で、shigeya さん
に送ったこのパッチは、正解だと思います。
# Emacs 21.3 は alarm() の時間が長いんでしょうね。
--かず
Index: src/process.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/process.c,v
retrieving revision 1.442
diff -c -r1.442 process.c
*** src/process.c 29 Sep 2004 23:43:08 -0000 1.442
--- src/process.c 19 Oct 2004 15:28:42 -0000
***************
*** 3140,3146 ****
if (xerrno == EINTR)
goto retry_connect;
! if (xerrno == EADDRINUSE && retry < 20)
{
/* A delay here is needed on some FreeBSD systems,
and it is harmless, since this retrying takes time anyway
--- 3140,3146 ----
if (xerrno == EINTR)
goto retry_connect;
! if ((xerrno == EADDRINUSE || xerrno == EALREADY) && retry < 20)
{
/* A delay here is needed on some FreeBSD systems,
and it is harmless, since this retrying takes time anyway
Mew-dist メーリングリストの案内