Thread overview
vibe.d Error only with Firefox
Jan 06, 2018
WebFreak001
Jan 06, 2018
crimaniak
January 05, 2018
Hello,
when starting my vibe.d service I get the message of failed address binding:
Failed to listen on 127.0.0.1:8030
Failed to listen on 10.0.0.1:8030
object.Exception@../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/http/vibe/http/server.d(2035): Failed to listen for incoming HTTP connections on any of the supplied interfaces.

This has been mentioned here:
http://forum.rejectedsoftware.com/groups/rejectedsoftware.vibed/thread/3480/

The strange thing is now, that when using Chromium http://10.0.0.1:8030 works!
But with Firefox http://10.0.0.1:8030

gives the long Error:
400 - Bad Request

Bad Request

Internal error information:
object.Exception@../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/stream/vibe/stream/operations.d(363): Reached maximum number of bytes while searching for end marker.
----------------
...
truncated
....
./../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/core/vibe/core/core.d:1269 void vibe.core.core.CoreTask.run() [0x94574a]
??:? void core.thread.Fiber.run() [0xa3c7ff]
??:? fiber_entryPoint [0xa3c562]
??:? [0xffffffff]

On the other side, when using http://localhost:8030/ or any other domain mapped to to 10.0.0.1 (in /etc/hosts) even Firefox works.

The error is relatively new since one of the last Firefox updates.

January 05, 2018
On 1/5/18 11:30 AM, Martin Tschierschke wrote:
> Hello,
> when starting my vibe.d service I get the message of failed address binding:
> Failed to listen on 127.0.0.1:8030
> Failed to listen on 10.0.0.1:8030
> object.Exception@../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/http/vibe/http/server.d(2035): Failed to listen for incoming HTTP connections on any of the supplied interfaces.

It's attempting to listen on localhost:8030, and 10.0.0.1:8030, but can't bind to either address. Then it looks like you get an exception. Does it actually continue running?

> 
> This has been mentioned here:
> http://forum.rejectedsoftware.com/groups/rejectedsoftware.vibed/thread/3480/ 

This is a different problem, where it attempts to listen on INADDR_ANY for both IPv6 and IPv4, but binding to IPv6 automatically binds to IPv4, so the second listen fails. One succeeded, so notice you don't get an exception.

> The strange thing is now, that when using Chromium http://10.0.0.1:8030 works!

Hm.. there are 2 possibilities here:
1. You have another statement somewhere in the same program which listens on that port/address combo (or INADDR_ANY on that port).
2. There's another program that has already bound to that address.

Use netstat to see if any program is listening, perhaps you have a stale version of your server running?

> But with Firefox http://10.0.0.1:8030
> 
> gives the long Error:
> 400 - Bad Request
> 
> Bad Request
> 
> Internal error information:
> object.Exception@../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/stream/vibe/stream/operations.d(363): Reached maximum number of bytes while searching for end marker.
> ----------------
> ....
> truncated
> .....
> ../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/core/vibe/core/core.d:1269 void vibe.core.core.CoreTask.run() [0x94574a]
> ??:? void core.thread.Fiber.run() [0xa3c7ff]
> ??:? fiber_entryPoint [0xa3c562]
> ??:? [0xffffffff]

This looks like a real error that isn't related to the bindings (as long as it's not some weird stale server). I'd suggest trying to create a minimal example and post it to vibe.d's issue tracker.

> 
> On the other side, when using http://localhost:8030/ or any other domain mapped to to 10.0.0.1 (in /etc/hosts) even Firefox works.

I think you need to post a working example in order for anyone to diagnose.

-Steve
January 06, 2018
On Friday, 5 January 2018 at 16:47:53 UTC, Steven Schveighoffer wrote:
> On 1/5/18 11:30 AM, Martin Tschierschke wrote:
>> Hello,
>> when starting my vibe.d service I get the message of failed address binding:
>> Failed to listen on 127.0.0.1:8030
>> Failed to listen on 10.0.0.1:8030
>> object.Exception@../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/http/vibe/http/server.d(2035): Failed to listen for incoming HTTP connections on any of the supplied interfaces.
>
> It's attempting to listen on localhost:8030, and 10.0.0.1:8030, but can't bind to either address. Then it looks like you get an exception. Does it actually continue running?

That error is always there, don't worry about it OP. The issue you are having doesn't have anything to do with the binding, after all you get a 400 error from the server.

>> But with Firefox http://10.0.0.1:8030
>> 
>> gives the long Error:
>> 400 - Bad Request
>> 
>> Bad Request
>> 
>> Internal error information:
>> object.Exception@../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/stream/vibe/stream/operations.d(363): Reached maximum number of bytes while searching for end marker.
>> ----------------
>> ....
>> truncated
>> .....
>> ../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/core/vibe/core/core.d:1269 void vibe.core.core.CoreTask.run() [0x94574a]
>> ??:? void core.thread.Fiber.run() [0xa3c7ff]
>> ??:? fiber_entryPoint [0xa3c562]
>> ??:? [0xffffffff]
>
> This looks like a real error that isn't related to the bindings (as long as it's not some weird stale server). I'd suggest trying to create a minimal example and post it to vibe.d's issue tracker.

Also try checking the developer tools of both browsers to see what headers they are sending, vibe.d probably has a problem with one of those and breaks because of it. But to be sure for sure you need to provide a code example.
January 06, 2018
On Friday, 5 January 2018 at 16:30:07 UTC, Martin Tschierschke wrote:
...
> Failed to listen on 127.0.0.1:8030
> Failed to listen on 10.0.0.1:8030
...
> The strange thing is now, that when using Chromium http://10.0.0.1:8030 works!
> But with Firefox http://10.0.0.1:8030
> gives the long Error:
> 400 - Bad Request

I would first figure out what happens to the port 8030. Run this command before and after starting the application to see who is really listening:
sudo netstat -nlp | grep 8030
January 08, 2018
On Friday, 5 January 2018 at 16:47:53 UTC, Steven Schveighoffer wrote:
> On 1/5/18 11:30 AM, Martin Tschierschke wrote:
>> Hello,
>> when starting my vibe.d service I get the message of failed address binding:
>> Failed to listen on 127.0.0.1:8030
>> Failed to listen on 10.0.0.1:8030
>> object.Exception@../../.dub/packages/vibe-d-0.8.2-rc.2/vibe-d/http/vibe/http/server.d(2035): Failed to listen for incoming HTTP connections on any of the supplied interfaces.
>
> It's attempting to listen on localhost:8030, and 10.0.0.1:8030, but can't bind to either address. Then it looks like you get an exception. Does it actually continue running?
Yes it works, the only strange thing is, that firefox seams to handle the direct use of the ip-address in a strange way.

sudo netstat -nlp | grep 8030
tcp        0      0 10.0.0.1:8030           0.0.0.0:*               LISTEN      31181/mysql-browse
tcp        0      0 127.0.0.1:8030          0.0.0.0:*               LISTEN      31181/mysql-browse

looks o.k., (mysql-browse is my program).

I will try to minimize my program, to see if it has anything to do with my coding or if the error is caused by something else.

Thank you all (Steven, Webfreak and Crimaniak).

As mentioned before in "normal" environments, when using a name based request, there is no error, so I can work around it, but for people just starting with vibe + Firefox the first impression should not be: Oh, what the ... is that ... :-)