[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 メーリングリストの案内