Skip to content

Commit ad1984f

Browse files
committed
Check that produce headers are of correct type
1 parent cd90d42 commit ad1984f

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

confluent_kafka/src/confluent_kafka.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -951,16 +951,22 @@ rd_kafka_headers_t *py_headers_to_c (PyObject *headers_plist) {
951951
const char *header_key, *header_value = NULL;
952952
int header_key_len = 0, header_value_len = 0;
953953

954+
if (!PyList_Check(headers_plist)) {
955+
PyErr_SetString(PyExc_TypeError,
956+
"Headers are expected to be a "
957+
"list of (key,value) tuples");
958+
return NULL;
959+
}
960+
954961
len = PyList_Size(headers_plist);
955962
rd_headers = rd_kafka_headers_new(len);
956963

957964
for (i = 0; i < len; i++) {
958-
959965
if(!PyArg_ParseTuple(PyList_GET_ITEM(headers_plist, i), "s#z#", &header_key,
960966
&header_key_len, &header_value, &header_value_len)){
961967
rd_kafka_headers_destroy(rd_headers);
962968
PyErr_SetString(PyExc_TypeError,
963-
"Headers are expected to be a tuple of (key, value)");
969+
"Headers are expected to be a list of (key,value) tuples");
964970
return NULL;
965971
}
966972

tests/test_Producer.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,13 @@ def test_produce_headers():
7171
p.produce('mytopic', value='somedata', key='a key', headers=[('key_with_null_value', None)])
7272
p.produce('mytopic', value='somedata', key='a key', headers=[])
7373

74+
with pytest.raises(TypeError) as ex:
75+
p.produce('mytopic', value='somedata', key='a key', headers={'my': 'dict'})
76+
assert 'Headers are expected to be a list of (key,value) tuples' == str(ex.value)
77+
7478
with pytest.raises(TypeError) as ex:
7579
p.produce('mytopic', value='somedata', key='a key', headers=[('malformed_header')])
76-
assert 'Headers are expected to be a tuple of (key, value)' == str(ex.value)
80+
assert 'Headers are expected to be a list of (key,value) tuples' == str(ex.value)
7781

7882
p.flush()
7983

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy