* * * * *
Another minor issue with DoH
So I'm still having issues with my DoH (Domain Name Service over HyperText
Transport Protocol) implementation [1]—this time it's Firefox complaining
about not finding a server. I modified the script [2] to log the request and
response and as far as I could tell, the addresses were being resolved. It's
just that Firefox was refusing to use the given answers. And trying to find
an answer to “firefox server not found” is a futile exercise these days,
giving me years old answers to issues that weren't quite what I was
experiencing.
It's all very annoying.
But in looking over the script, again, I had a small epiphany.
-----[ Lua ]-----
local function output(status,data)
if not data then
io.stdout:write(string.format([[
Status: %d
Content-Length: 0
]],status))
else
io.stdout:write(string.format([[
Status: %d
Content-Type: application/dns-message
Content-Length: %d
%s]],status,#data,data))
end
end
-----[ END OF LINE ]-----
The code is running on Unix. By default, the “end-of-line” marker is just a
line feed character. But the HTTP (HyperText Transport Protocol)
specification requires both a line feed and a carriage return character to
mark the “end-of-line.” Given that the script works most of the time, I
thought Self, perhaps there's a different codepath that is a bit more
pedantic about the HTTP specification these particular sites hit for whatever
reason. I changed the code:
-----[ Lua ]-----
local function output(status,data)
if not data then
io.stdout:write(
string.format("Status: %d\r\n",status),
"Content-Length: 0\r\n",
"\r\n"
)
else
io.stdout:write(
string.format("Status: %d\r\n",status),
"Content-Type: application/dns-message\r\n",
string.format("Content-Length: %d\r\n",#data),
"\r\n",
data
)
end
end
-----[ END OF LINE ]-----
And immediately, the sites I was having problems with started loading
reliably in Firefox. Hopefully, this is the last bug [3] with this service …
[1]
gopher://gopher.conman.org/0Phlog:2019/10/17.1
[2]
gopher://gopher.conman.org/0Phlog:2019/10/17/dns.lua
[3]
gopher://gopher.conman.org/0Phlog:2019/10/18.1
Email author at
[email protected]