Mailing List Archive

Support open source code!


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Mail software freezes when sending mail



>>>>> "CSD" == CSD  <aim@example.com> writes:

    CSD> Has anyone heard of such a problem?

My only guess is nameserver fsckedness.  This can probably happen even
if you specify your server as an IP address, because of the way the
new getaddrinfo stuff works.  First it checks for IPv6 stuff, which
apparently _requires_ a dns lookup to get a "canonical name" even for
localhost.  Then it falls back to IPv4.

There was a thread on XEmacs-Beta a few months back; go to
http://www.xemacs.org/list-archives/xemacs-beta/ and search on
"getaddrinfo".  There may have been some relevant workarounds proposed
(the main problem was slow startup, though, so I don't know if they
would help in your case).

Here's what XEmacs PROBLEMS has to say (not very helpful, I'm afraid):

**** New problem: IPv6 CNAME lookup

A newer problem is due to XEmacs changing to use the modern
getaddrinfo() interface from the older gethostbyname() interface.  The
solution above is insufficient, because getaddrinfo() by default tries
to get IPv6 information for localhost.  This always involves a dns
lookup to get the CNAME, and the strategies above don't work.  It then
falls back to IPv4 behavior.  This is good[tm]; trust us.

***** Robust network case

Configure your network so that there are no nameservers configured
until the network is actually running.  getaddrinfo() will not try to
access a nameserver that isn't configured.

***** Flaky network case

If you have a flaky modem or DSL connection that can be relied on only
to go down whenever you want to bring XEmacs up, you need to force
IPv4 behavior.  Explicitly setting DISPLAY=127.0.0.1:0.0 (or whatever
is appropriate) works in most cases.

If you cannot or do not want to do that, you can hard code IPv4
behavior in src/process-unix.c.  This is bad[tm], on your own head be
it.  In the function unix_canonicalize_host_name() about ten lines
down, change the statement

  hints.ai_family = AF_UNSPEC;

to

  hints.ai_family = PF_INET;

and rebuild XEmacs.

getaddrinfo() is also called in src/sysdep.c:init_system_name() and in
src/process-unix.c:unix_open_network_stream().  It should not be
useful to make this change in either of those places.


-- 
University of Tsukuba                Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Institute of Policy and Planning Sciences       Tel/fax: +81 (298) 53-5091
_________________  _________________  _________________  _________________
What are those straight lines for?  "XEmacs rules."


Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links