BUG/MAJOR: namespaces: conn->target is not necessarily a server

create_server_socket() used to dereference objt_server(conn->target),
but if the target is not a server (eg: a proxy) then it's NULL and we
get a segfault. This can be reproduced with a proxy using "dispatch"
with no server, even when namespaces are disabled, because that code
is not #ifdef'd. The fix consists in first checking if the target is
a server.

This fix does not need to be backported, this is 1.6-only.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index afb9e15..66d8b9d 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -250,11 +250,16 @@
 
 static int create_server_socket(struct connection *conn)
 {
-	const struct netns_entry *ns = objt_server(conn->target)->netns;
-
-	if (objt_server(conn->target)->flags & SRV_F_USE_NS_FROM_PP)
-		ns = conn->proxy_netns;
+	const struct netns_entry *ns = NULL;
 
+#ifdef CONFIG_HAP_NS
+	if (objt_server(conn->target)) {
+		if (__objt_server(conn->target)->flags & SRV_F_USE_NS_FROM_PP)
+			ns = conn->proxy_netns;
+		else
+			ns = __objt_server(conn->target)->netns;
+	}
+#endif
 	return my_socketat(ns, conn->addr.to.ss_family, SOCK_STREAM, IPPROTO_TCP);
 }