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.md

Please 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?