diff --git a/include/haproxy/quic_sock.h b/include/haproxy/quic_sock.h
new file mode 100644
index 0000000..78623e8
--- /dev/null
+++ b/include/haproxy/quic_sock.h
@@ -0,0 +1,43 @@
+/*
+ * include/haproxy/quic_sock.h
+ * This file contains declarations for QUIC sockets.
+ *
+ * Copyright 2020 Frédéric Lécaille <flecaille@haproxy.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, version 2.1
+ * exclusively.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef _HAPROXY_QUIC_SOCK_H
+#define _HAPROXY_QUIC_SOCK_H
+
+#include <sys/socket.h>
+#include <sys/types.h>
+
+#include <haproxy/api.h>
+#include <haproxy/connection-t.h>
+#include <haproxy/listener-t.h>
+
+int quic_sock_accepting_conn(const struct receiver *rx);
+struct connection *quic_sock_accept_conn(struct listener *l, int *status);
+void quic_sock_fd_iocb(int fd);
+
+#endif /* _HAPROXY_QUIC_SOCK_H */
+
+/*
+ * Local variables:
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ * End:
+ */
diff --git a/src/proto_quic.c b/src/proto_quic.c
index bde3e48..751fc49 100644
--- a/src/proto_quic.c
+++ b/src/proto_quic.c
@@ -41,6 +41,7 @@
 #include <haproxy/proto_udp.h>
 #include <haproxy/proxy-t.h>
 #include <haproxy/sock.h>
+#include <haproxy/quic_sock.h>
 #include <haproxy/sock_inet.h>
 #include <haproxy/tools.h>
 
@@ -63,7 +64,7 @@
 	.unbind         = default_unbind_listener,
 	.suspend        = default_suspend_listener,
 	.resume         = default_resume_listener,
-	.accept_conn    = sock_accept_conn,
+	.accept_conn    = quic_sock_accept_conn,
 	.connect        = quic_connect_server,
 
 	/* binding layer */
@@ -79,8 +80,8 @@
 	.rx_enable      = sock_enable,
 	.rx_disable     = sock_disable,
 	.rx_unbind      = sock_unbind,
-	.rx_listening   = sock_accepting_conn,
-	.default_iocb   = sock_accept_iocb,
+	.rx_listening   = quic_sock_accepting_conn,
+	.default_iocb   = quic_sock_fd_iocb,
 	.receivers      = LIST_HEAD_INIT(proto_quic4.receivers),
 	.nb_receivers   = 0,
 };
@@ -100,7 +101,7 @@
 	.unbind         = default_unbind_listener,
 	.suspend        = default_suspend_listener,
 	.resume         = default_resume_listener,
-	.accept_conn    = sock_accept_conn,
+	.accept_conn    = quic_sock_accept_conn,
 	.connect        = quic_connect_server,
 
 	/* binding layer */
@@ -116,8 +117,8 @@
 	.rx_enable      = sock_enable,
 	.rx_disable     = sock_disable,
 	.rx_unbind      = sock_unbind,
-	.rx_listening   = sock_accepting_conn,
-	.default_iocb   = sock_accept_iocb,
+	.rx_listening   = quic_sock_accepting_conn,
+	.default_iocb   = quic_sock_fd_iocb,
 	.receivers      = LIST_HEAD_INIT(proto_quic6.receivers),
 	.nb_receivers   = 0,
 };
diff --git a/src/quic_sock.c b/src/quic_sock.c
new file mode 100644
index 0000000..374e97b
--- /dev/null
+++ b/src/quic_sock.c
@@ -0,0 +1,72 @@
+/*
+ * QUIC socket management.
+ *
+ * Copyright 2020 HAProxy Technologies, Frédéric Lécaille <flecaille@haproxy.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ */
+
+#include <errno.h>
+
+#include <sys/socket.h>
+#include <sys/types.h>
+
+#include <haproxy/connection.h>
+#include <haproxy/listener.h>
+
+/* Tests if the receiver supports accepting connections. Returns positive on
+ * success, 0 if not possible
+ */
+int quic_sock_accepting_conn(const struct receiver *rx)
+{
+	return 1;
+}
+
+/* Accept an incoming connection from listener <l>, and return it, as well as
+ * a CO_AC_* status code into <status> if not null. Null is returned on error.
+ * <l> must be a valid listener with a valid frontend.
+ */
+struct connection *quic_sock_accept_conn(struct listener *l, int *status)
+{
+	/* TO DO */
+	return NULL;
+}
+
+/* Function called on a read event from a listening socket. It tries
+ * to handle as many connections as possible.
+ */
+void quic_sock_fd_iocb(int fd)
+{
+	ssize_t ret;
+	struct buffer *buf;
+	struct listener *l = objt_listener(fdtab[fd].owner);
+	/* Source address */
+	struct sockaddr_storage saddr = {0};
+	socklen_t saddrlen;
+
+	if (!l)
+		ABORT_NOW();
+
+	if (!(fdtab[fd].ev & FD_POLL_IN) || !fd_recv_ready(fd))
+		return;
+
+	buf = get_trash_chunk();
+	saddrlen = sizeof saddr;
+	do {
+		ret = recvfrom(fd, buf->area, buf->size, 0,
+		               (struct sockaddr *)&saddr, &saddrlen);
+		if (ret < 0) {
+			if (errno == EINTR)
+				continue;
+			if (errno == EAGAIN)
+				fd_cant_recv(fd);
+			return;
+		}
+	} while (0);
+
+	buf->data = ret;
+}
