INSIST(transp_sock->type == isc_nm_tlssocket);
- isc_tls_get_selected_alpn(transp_sock->tlsstream.tls, &alpn,
- &alpnlen);
+ isc__nmhandle_get_selected_alpn(handle, &alpn, &alpnlen);
if (alpn == NULL || alpnlen != NGHTTP2_PROTO_VERSION_ID_LEN ||
memcmp(NGHTTP2_PROTO_VERSION_ID, alpn,
NGHTTP2_PROTO_VERSION_ID_LEN) != 0)
isc__nm_tls_failed_read_cb(isc_nmsocket_t *sock, isc_result_t result,
bool async);
+void
+isc__nmhandle_tls_get_selected_alpn(isc_nmhandle_t *handle,
+ const unsigned char **alpn,
+ unsigned int *alpnlen);
+
void
isc__nm_http_stoplistening(isc_nmsocket_t *sock);
* Set manual read timer control mode - so that it will not get reset
* automatically on read nor get started when read is initiated.
*/
+
+void
+isc__nmhandle_get_selected_alpn(isc_nmhandle_t *handle,
+ const unsigned char **alpn,
+ unsigned int *alpnlen);
+/*
+ * Returns a non zero terminated ALPN identifier via 'alpn'. The
+ * length of the identifier is returned via 'alpnlen'. If after the
+ * call either 'alpn == NULL' or 'alpnlen == 0', then identifier was
+ * not negotiated of the underlying protocol of the connection
+ * represented via the given handle does not support ALPN.
+ */
UNREACHABLE();
}
+void
+isc__nmhandle_get_selected_alpn(isc_nmhandle_t *handle,
+ const unsigned char **alpn,
+ unsigned int *alpnlen) {
+ isc_nmsocket_t *sock;
+
+ REQUIRE(VALID_NMHANDLE(handle));
+ sock = handle->sock;
+ REQUIRE(VALID_NMSOCK(sock));
+
+ switch (sock->type) {
+#if HAVE_LIBNGHTTP2
+ case isc_nm_tlssocket:
+ isc__nmhandle_tls_get_selected_alpn(handle, alpn, alpnlen);
+ return;
+#endif /* HAVE_LIBNGHTTP2 */
+ default:
+ break;
+ };
+}
+
#ifdef NETMGR_TRACE
/*
* Dump all active sockets in netmgr. We output to stderr
sock->manual_read_timer = manual;
}
+
+void
+isc__nmhandle_tls_get_selected_alpn(isc_nmhandle_t *handle,
+ const unsigned char **alpn,
+ unsigned int *alpnlen) {
+ isc_nmsocket_t *sock;
+
+ REQUIRE(VALID_NMHANDLE(handle));
+ sock = handle->sock;
+ REQUIRE(VALID_NMSOCK(sock));
+ REQUIRE(sock->type == isc_nm_tlssocket);
+ REQUIRE(sock->tid == isc_tid());
+
+ isc_tls_get_selected_alpn(sock->tlsstream.tls, alpn, alpnlen);
+}