- size_t header_len = 1 + lenof(": ") + name_len + value_len;
- char *header = emalloc(header_len);
-
- header[header_len - 1] = '\0';
- snprintf(header, header_len, "%s: %s", name, value);
- ret = http_send_header_string_ex(header, replace);
- efree(header);
+ size_t header_len = sizeof(": ") + name_len + value_len + 1;
+ char *header = emalloc(header_len + 1);
+
+ header[header_len] = '\0';
+ header_len = snprintf(header, header_len, "%s: %s", name, value);
+ ret = http_send_header_string_ex(header, header_len, replace);
+ if (sent_header) {
+ *sent_header = header;
+ } else {
+ efree(header);
+ }