diff --git a/lib/context.c b/lib/context.c
index d42f07c61a9c7d653b3978b93eda0c10115df4d3..6b12cd19070a8b004d35549f2219333b13212eee 100644
--- a/lib/context.c
+++ b/lib/context.c
@@ -83,7 +83,7 @@ lws_role_call_alpn_negotiated(struct lws *wsi, const char *alpn)
 	lwsl_info("%s: '%s'\n", __func__, alpn);
 
 	LWS_FOR_EVERY_AVAILABLE_ROLE_START(ar)
-		if (!strcmp(ar->alpn, alpn) && ar->alpn_negotiated)
+		if (ar->alpn && !strcmp(ar->alpn, alpn) && ar->alpn_negotiated)
 			return ar->alpn_negotiated(wsi, alpn);
 	LWS_FOR_EVERY_AVAILABLE_ROLE_END;
 #endif