On Fri, Sep 19, 2014 at 10:24 AM, Adam Harvey <ahar...@php.net> wrote:

> On 19 September 2014 02:58, Chris Wright <c...@daverandom.com> wrote:
> > On 18 September 2014 20:29, Kris Craig <kris.cr...@gmail.com> wrote:
> >> Hey guys,
> >>
> >> I just spent some time troubleshooting what appeared to be a DNS issue
> >> before I realized that, absent the optional $type argument, checkdnsrr()
> >> defaults to "MX".  Can anybody explain why it's defaulting to "MX" and
> not
> >> "ANY"?  It seems really counter-intuitive.
> >
> > This is a big wtf, especially since getmxrr() exists. A cursory search
> > of github (not the best measure I know, but easy) reveals only a few
> > cases where this function is called without the second argument, and
> > every case I've found looks like they were expecting an A record, so
> > this code is likely broken anyway.
> >
> > In other words, +1 to change this to something saner ASAP.
>
> As an alternative, could we just make the type argument mandatory in
> PHP 7 and start issuing E_DEPRECATED warnings if it's omitted in 5.6
> or 5.7?
>
> Adam
>

I like both ideas.  Adam's approach would be more inconvenient for
developers, but it would also be less of a BC issue since merely changing
the default could cause some existing code to fail silently as opposed to
generating an error.  On the other hand, I can't think of any such use case
in which checking all DNS entries instead of just MX would cause any
scripts to break.  The only possible scenario I can think of would be if
they're using dnsrr() to check if an MX record exists and hit a host that
has an A record but not MX.  That would cause it to return TRUE when
they're expecting FALSE.

I'll draft an RFC when I get a chance and include both options in it.

--Kris

Reply via email to