diff --git a/include/haproxy/protocol-t.h b/include/haproxy/protocol-t.h
index 4f5aac2..cacd3fc 100644
--- a/include/haproxy/protocol-t.h
+++ b/include/haproxy/protocol-t.h
@@ -37,10 +37,11 @@
  * Custom network family for str2sa parsing.  Should be ok to do this since
  * sa_family_t is standardized as an unsigned integer
  */
-#define AF_CUST_SOCKPAIR     (AF_MAX + 1)
-#define AF_CUST_UDP4         (AF_MAX + 2)
-#define AF_CUST_UDP6         (AF_MAX + 3)
-#define AF_CUST_MAX          (AF_MAX + 4)
+#define AF_CUST_EXISTING_FD  (AF_MAX + 1)
+#define AF_CUST_SOCKPAIR     (AF_MAX + 2)
+#define AF_CUST_UDP4         (AF_MAX + 3)
+#define AF_CUST_UDP6         (AF_MAX + 4)
+#define AF_CUST_MAX          (AF_MAX + 5)
 
 /*
  * Test in case AF_CUST_MAX overflows the sa_family_t (unsigned int)
diff --git a/src/cfgparse.c b/src/cfgparse.c
index cc5f9f7..8effc83 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -156,7 +156,7 @@
 				goto fail;
 			}
 		}
-		else if (ss2->ss_family == AF_UNSPEC) {
+		else if (ss2->ss_family == AF_CUST_EXISTING_FD) {
 			socklen_t addr_len;
 			inherited = 1;
 
diff --git a/src/log.c b/src/log.c
index 702f443..e125713 100644
--- a/src/log.c
+++ b/src/log.c
@@ -1754,14 +1754,14 @@
 	while (size && (message[size-1] == '\n' || (message[size-1] == 0)))
 		size--;
 
-	if (logsrv->type == LOG_TARGET_FD) {
-		/* the socket's address is a file descriptor */
-		plogfd = (int *)&((struct sockaddr_in *)&logsrv->addr)->sin_addr.s_addr;
-	}
-	else if (logsrv->type == LOG_TARGET_BUFFER) {
+	if (logsrv->type == LOG_TARGET_BUFFER) {
 		plogfd = NULL;
 		goto send;
 	}
+	else if (logsrv->addr.ss_family == AF_CUST_EXISTING_FD) {
+		/* the socket's address is a file descriptor */
+		plogfd = (int *)&((struct sockaddr_in *)&logsrv->addr)->sin_addr.s_addr;
+	}
 	else if (logsrv->addr.ss_family == AF_UNIX)
 		plogfd = &logfdunix;
 	else
@@ -1790,18 +1790,23 @@
 
 	msg_header = build_log_header(logsrv->format, level, facility, metadata, &nbelem);
  send:
-	if (logsrv->addr.ss_family == AF_UNSPEC) {
+	if (logsrv->type == LOG_TARGET_BUFFER) {
 		struct ist msg;
 
 		msg = ist2(message, size);
 		if (msg.len > logsrv->maxlen)
 			msg.len = logsrv->maxlen;
 
-		if (logsrv->type == LOG_TARGET_BUFFER) {
-			sent = sink_write(logsrv->sink, &msg, 1, level, logsrv->facility, metadata);
-		}
-		else /* LOG_TARGET_FD */
-			sent = fd_write_frag_line(*plogfd, logsrv->maxlen, msg_header, nbelem, &msg, 1, 1);
+		sent = sink_write(logsrv->sink, &msg, 1, level, logsrv->facility, metadata);
+	}
+	else if (logsrv->addr.ss_family == AF_CUST_EXISTING_FD) {
+		struct ist msg;
+
+		msg = ist2(message, size);
+		if (msg.len > logsrv->maxlen)
+			msg.len = logsrv->maxlen;
+
+		sent = fd_write_frag_line(*plogfd, logsrv->maxlen, msg_header, nbelem, &msg, 1, 1);
 	}
 	else {
 		int i = 0;
diff --git a/src/tools.c b/src/tools.c
index 803afab..d948993 100644
--- a/src/tools.c
+++ b/src/tools.c
@@ -861,7 +861,8 @@
  * <fqdn> was filled, indicating the need for a resolution.
  *
  * When a file descriptor is passed, its value is put into the s_addr part of
- * the address when cast to sockaddr_in and the address family is AF_UNSPEC.
+ * the address when cast to sockaddr_in and the address family is
+ * AF_CUST_EXISTING_FD.
  */
 struct sockaddr_storage *str2sa_range(const char *str, int *port, int *low, int *high, char **err, const char *pfx, char **fqdn, int resolve)
 {
@@ -957,8 +958,8 @@
 			goto out;
 		}
 
-		/* we return AF_UNSPEC if we use a file descriptor number */
-		ss.ss_family = AF_UNSPEC;
+		/* we return AF_CUST_EXISTING_FD if we use a file descriptor number */
+		ss.ss_family = AF_CUST_EXISTING_FD;
 	}
 	else if (ss.ss_family == AF_UNIX) {
 		struct sockaddr_un *un = (struct sockaddr_un *)&ss;
