devserver: work on system with kernel that does not support IPv6

BUG=none
TEST=Unittests. Verified that devserver now runs on non-IPv6 kernel.

Change-Id: Idc6a437bfc8c1f4dead169b5eda042c0cc82cf0a
Reviewed-on: https://gerrit.chromium.org/gerrit/39434
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Ready: Mandeep Singh Baines <msb@chromium.org>
Tested-by: Mandeep Singh Baines <msb@chromium.org>
diff --git a/devserver.py b/devserver.py
index 5692d97..6a855e8 100755
--- a/devserver.py
+++ b/devserver.py
@@ -11,6 +11,7 @@
 import optparse
 import os
 import re
+import socket
 import sys
 import subprocess
 import tempfile
@@ -107,10 +108,20 @@
 
 def _GetConfig(options):
   """Returns the configuration for the devserver."""
+
+  # On a system with IPv6 not compiled into the kernel,
+  # AF_INET6 sockets will return a socket.error exception.
+  # On such systems, fall-back to IPv4.
+  socket_host = '::'
+  try:
+    socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
+  except socket.error:
+    socket_host = '0.0.0.0'
+
   base_config = { 'global':
                   { 'server.log_request_headers': True,
                     'server.protocol_version': 'HTTP/1.1',
-                    'server.socket_host': '::',
+                    'server.socket_host': socket_host,
                     'server.socket_port': int(options.port),
                     'response.timeout': 6000,
                     'request.show_tracebacks': True,