@@ -2127,7 +2127,9 @@ static int rd_kafka_broker_produce_toppar (rd_kafka_broker_t *rkb,
2127
2127
2128
2128
2129
2129
/* Value(payload) length */
2130
- msghdr -> part4 .Value_len = htonl (rkm -> rkm_len );
2130
+ msghdr -> part4 .Value_len = htonl (rkm -> rkm_payload ?
2131
+ rkm -> rkm_len :
2132
+ RD_KAFKAP_BYTES_LEN_NULL );
2131
2133
msghdr -> part3 .Crc =
2132
2134
crc32 (msghdr -> part3 .Crc ,
2133
2135
(void * )
@@ -2136,14 +2138,16 @@ static int rd_kafka_broker_produce_toppar (rd_kafka_broker_t *rkb,
2136
2138
Value_len ));
2137
2139
2138
2140
rd_kafka_buf_push (rkbuf , & msghdr -> part4 , sizeof (msghdr -> part4 ));
2139
-
2140
2141
2141
2142
/* Payload */
2142
- msghdr -> part3 .Crc =
2143
- crc32 (msghdr -> part3 .Crc ,
2144
- rkm -> rkm_payload ,
2145
- rkm -> rkm_len );
2146
- rd_kafka_buf_push (rkbuf , rkm -> rkm_payload , rkm -> rkm_len );
2143
+ if (rkm -> rkm_payload ) {
2144
+ msghdr -> part3 .Crc =
2145
+ crc32 (msghdr -> part3 .Crc ,
2146
+ rkm -> rkm_payload ,
2147
+ rkm -> rkm_len );
2148
+ rd_kafka_buf_push (rkbuf , rkm -> rkm_payload ,
2149
+ rkm -> rkm_len );
2150
+ }
2147
2151
2148
2152
2149
2153
/* Finalize Crc */
@@ -2807,7 +2811,10 @@ static rd_kafka_resp_err_t rd_kafka_messageset_handle (rd_kafka_broker_t *rkb,
2807
2811
RD_KAFKAP_BYTES_LEN (Key );
2808
2812
}
2809
2813
2810
- rko -> rko_rkmessage .payload = Value -> data ;
2814
+ /* Forward NULL message notation to application. */
2815
+ rko -> rko_rkmessage .payload =
2816
+ RD_KAFKAP_BYTES_IS_NULL (Value ) ?
2817
+ NULL : Value -> data ;
2811
2818
rko -> rko_rkmessage .len = Value_len ;
2812
2819
2813
2820
rko -> rko_rkmessage .offset = hdr -> Offset ;
0 commit comments