On Fri, 22 Apr 2016 10:13:39 +0200, Sönke Ludwig wrote:
Main changes
- Drops support for DMD frontend 2.066.x and below (which includes the
current stable GDC release) and adds support up to 2.071.0- Removes all deprecated functionality, as well as the libev driver
- Contains considerable performance improvement for
URLRouter
All changes can be found in the change log:
https://github.com/rejectedsoftware/vibe.d/blob/master/CHANGELOG.mdPlease help testing by running
dub upgrade --prerelase
on your project.
Hi Sönke!
I noticed a breaking change:
https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/http/server.d#L1662
if (s.startsWith('[')) { // IPv6 address
auto idx = s.indexOf(']');
enforce(idx > 0, "Missing closing ']' for IPv6 address.");
reqhost = s[1 .. idx];
s = s[idx+1 .. $];
} else { // host name or IPv4 address
auto idx = s.indexOf(':');
if (idx < 0) idx = s.length;
enforce(idx > 0, "Missing host name.");
reqhost = s[0 .. idx];
s = s[idx .. $];
}
This basically enforces there is a host in the headers, and if there isn't one, it will display the error page.
The bigger issue is that the error page will be called with an half-way initialized req
and res
which is problematic. Basically req.settings
is not set yet so a req.fullURL in the error page call will crash the server.
Maybe just gracefully ignoring these two errors and picking the first v-host and then throwing the exception after more of the request is parsed would be a better response.
What do you think?