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