]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Extract TLS SNI for DoH if support is present
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 15 May 2019 16:15:22 +0000 (18:15 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 20 May 2019 09:10:28 +0000 (11:10 +0200)
pdns/dnsdistdist/doh.cc
pdns/dnsdistdist/m4/pdns_check_libh2o_evloop.m4

index 22c3765ca83a85547ed97261b1fea7020e186184..4e585d4afa58c96b7c2ef445bf6368a8cd8bdc9f 100644 (file)
@@ -185,6 +185,13 @@ static int processDOHQuery(DOHUnit* du)
     dq.ednsAdded = du->ednsAdded;
     dq.du = du;
     queryId = ntohs(dh->id);
+#ifdef HAVE_H2O_SOCKET_GET_SSL_SERVER_NAME
+    h2o_socket_t* sock = du->req->conn->callbacks->get_socket(du->req->conn);
+    const char * sni = h2o_socket_get_ssl_server_name(sock);
+    if (sni != nullptr) {
+      dq.sni = sni;
+    }
+#endif /* HAVE_H2O_SOCKET_BET_SSL_SERVER_NAME */
 
     std::shared_ptr<DownstreamState> ss{nullptr};
     auto result = processQuery(dq, cs, holders, ss);
index ffe066b72fdf6a92462ab90b3b02bee3a3575829..00781ce32b8430f4473f5bd01a0157758a56b394 100644 (file)
@@ -3,6 +3,19 @@ AC_DEFUN([PDNS_CHECK_LIBH2OEVLOOP], [
   PKG_CHECK_MODULES([LIBH2OEVLOOP], [libh2o-evloop], [
     [HAVE_LIBH2OEVLOOP=1]
     AC_DEFINE([HAVE_LIBH2OEVLOOP], [1], [Define to 1 if you have libh2o-evloop])
+    save_CFLAGS=$CFLAGS
+    save_LIBS=$LIBS
+    CFLAGS="$LIBH2OEVLOOP_CFLAGS $CFLAGS"
+    LIBS="$LIBH2OEVLOOP_LIBS $LIBS"
+    AC_CHECK_DECLS([h2o_socket_get_ssl_server_name], [
+          AC_DEFINE([HAVE_H2O_SOCKET_GET_SSL_SERVER_NAME], [1], [define to 1 if h2o_socket_get_ssl_server_name is available.])
+        ],
+        [ : ],
+        [AC_INCLUDES_DEFAULT
+          #include <h2o/socket.h>
+      ])
+    CFLAGS=$save_CFLAGS
+    LIBS=$save_LIBS
   ], [ : ])
   AM_CONDITIONAL([HAVE_LIBH2OEVLOOP], [test "x$LIBH2OEVLOOP_LIBS" != "x"])
 ])