tool_writeout_json. fix the output for duplicate header names
Header entries with index != 0 are handled at the index 0 level so they should then be skipped when iterated over. Reported-by: Boris Okunskiy Fixes #10704 Closes #10707
This commit is contained in:
parent
05616379ee
commit
842be672c8
@ -110,11 +110,6 @@ void headerJSON(FILE *stream, struct per_transfer *per)
|
||||
fputc('{', stream);
|
||||
while((header = curl_easy_nextheader(per->curl, CURLH_HEADER, -1,
|
||||
prev))) {
|
||||
if(prev)
|
||||
fputs(",\n", stream);
|
||||
jsonWriteString(stream, header->name, TRUE);
|
||||
fputc(':', stream);
|
||||
prev = header;
|
||||
if(header->amount > 1) {
|
||||
if(!header->index) {
|
||||
/* act on the 0-index entry and pull the others in, then output in a
|
||||
@ -122,6 +117,11 @@ void headerJSON(FILE *stream, struct per_transfer *per)
|
||||
size_t a = header->amount;
|
||||
size_t i = 0;
|
||||
char *name = header->name;
|
||||
if(prev)
|
||||
fputs(",\n", stream);
|
||||
jsonWriteString(stream, header->name, TRUE);
|
||||
fputc(':', stream);
|
||||
prev = header;
|
||||
fputc('[', stream);
|
||||
do {
|
||||
jsonWriteString(stream, header->value, FALSE);
|
||||
@ -132,13 +132,18 @@ void headerJSON(FILE *stream, struct per_transfer *per)
|
||||
-1, &header))
|
||||
break;
|
||||
} while(1);
|
||||
fputc(']', stream);
|
||||
}
|
||||
fputc(']', stream);
|
||||
}
|
||||
else {
|
||||
if(prev)
|
||||
fputs(",\n", stream);
|
||||
jsonWriteString(stream, header->name, TRUE);
|
||||
fputc(':', stream);
|
||||
fputc('[', stream);
|
||||
jsonWriteString(stream, header->value, FALSE);
|
||||
fputc(']', stream);
|
||||
prev = header;
|
||||
}
|
||||
}
|
||||
fputs("\n}", stream);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user