<<< Date Index >>>     <<< Thread Index >>>

Re: [Mutt] #3298: Mutt's way to get the FQDN is broken



#3298: Mutt's way to get the FQDN is broken
---------------------+------------------------------------------------------
  Reporter:  vinc17  |       Owner:  mutt-dev
      Type:  defect  |      Status:  new     
  Priority:  major   |   Milestone:          
 Component:  mutt    |     Version:  1.5.20  
Resolution:          |    Keywords:          
---------------------+------------------------------------------------------

Comment(by Derek Martin):

 {{{
 On Thu, Aug 13, 2009 at 08:17:21PM -0000, Rocco wrote:

 Using compat.h is a good suggestion, but I didn't use it. :)  Instead,
 I created addrinfo.h, and put the definition of struct addrinfo in
 there.  As far as I can see, there is currently no place where other
 such structures are defined...  If you feel strongly that this should
 be called compat.h, feel free to change it.  You will obviously need
 to change the includes in getdomain.c, getaddrinfo.c, freeaddrinfo.c,
 and protos.h.


 Of course having two versions of a function can't really happen; the
 linker will use whichever one it finds first.  As long as they both
 work (and they should, so long as their prototypes and the actual data
 passed to both are the same), this shouldn't be a problem...

 New patch attached, I believe this one is kosher.  I can't really
 think of a way to test the replacement functions though, since I have
 no system that doesn't have the originals.  I did test them
 individually, and they worked...

 A couple of other quick notes:

 If getdnsdomainname() fails, the original code sets Fqdn to "@".  I
 changed this to strdup(Hostname).  I believe this is the right thing
 to do:  If the DNS domain name can not be determined by the host
 computer's resolver libraries, then either the system's hostname
 resolution is in a broken state, OR DNS domain names are not in use.
 Granted, the latter case is exceedingly rare now, but it is a valid
 configuration.  You don't need DNS for mail to work, particularly if
 you're using an internal mail system only.  But you DO need a hostname
 (node name). :)  Leaving the FQDN set to "@" seems not sensible; the
 only other option that makes sense to me is to have mutt error out.

 Lastly, I intentionally checked HAVE_GETADDRINFO when deciding whether
 to include addrinfo.h, even when dealing with freeaddrinfo() instead.
 The reality is that it's extremely unlikely that an implementation
 will have one and not the other; but even ignoring that, if an
 implementation were to provide getaddrinfo() then it MUST define
 struct addrinfo.  So if you have that function, you have
 struct addrinfo, even if you don't also have freeaddrinfo(), which
 again, is extremely unlikely.
 }}}

-- 
Ticket URL: <http://dev.mutt.org/trac/ticket/3298#comment:>
Mutt <http://www.mutt.org/>
The Mutt mail user agent