From 5237274bd4d67d8c393e252217d014cc3020f755 Mon Sep 17 00:00:00 2001 From: Alexandre Choura Date: Fri, 3 Jan 2025 10:18:56 +0100 Subject: [PATCH] fix: Don't install handler if producev does not exist --- ext/handlers_kafka.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ext/handlers_kafka.c b/ext/handlers_kafka.c index 1229b6b033..3aa5d476e0 100644 --- a/ext/handlers_kafka.c +++ b/ext/handlers_kafka.c @@ -87,6 +87,11 @@ void ddtrace_kafka_handlers_startup(void) { return; } + zend_class_entry* producer_topic_ce = zend_hash_str_find_ptr(CG(class_table), ZEND_STRL("rdkafka\\producertopic")); + if (!producer_topic_ce || !zend_hash_str_exists(&producer_topic_ce->function_table, ZEND_STRL("producev"))) { + return; // Don't install handlers if producev doesn't exist + } + // Determine the number of arguments for producev (check if purge exists) // See https://github.com/arnaud-lb/php-rdkafka/blob/d6f4d160422a0f8c1e3ee6a18add7cd8f805ba07/topic.c#L495-L497 zend_class_entry* kafka_ce = zend_hash_str_find_ptr(CG(class_table), ZEND_STRL("rdkafka"));