diff --git a/src/server/net.c b/src/server/net.c
index eb2c36c4b38043f17ba15030980f9e0fdfadcb59..f9f70a6b0a90378ce55c0d731fba09e5642ae3b9 100644
--- a/src/server/net.c
+++ b/src/server/net.c
@@ -96,6 +96,13 @@ static gchar *net_get_host_string(GSocketConnection *con)
 	GInetAddress   *iaddr;
 
 
+	if (!G_IS_SOCKET_CONNECTION(con))
+		return NULL;
+
+	if (!g_socket_connection_is_connected(con))
+		return NULL;
+
+
 	addr = g_socket_connection_get_remote_address(con, NULL);
 	iaddr = g_inet_socket_address_get_address(G_INET_SOCKET_ADDRESS(addr));
 
@@ -485,6 +492,7 @@ static gboolean net_send_internal(struct con_data *c, const char *pkt, gsize nby
 	if (!G_IS_SOCKET_CONNECTION(c->con)) {
 		g_warning("%s:%d: supplied argument is not a socket connection",
 			  __func__, __LINE__);
+		return FALSE;
 	}
 
 	if (g_thread_pool_get_num_threads(c->pool) >= SERVER_CON_POOL_SIZE) {