Index: src/OFHTTPClient.m ================================================================== --- src/OFHTTPClient.m +++ src/OFHTTPClient.m @@ -503,11 +503,11 @@ status = (int)[[line substringWithRange: of_range(9, 3)] decimalValue]; serverHeaders = [OFMutableDictionary dictionary]; for (;;) { - OFString *key, *value; + OFString *key, *value, *old; const char *lineC, *tmp; char *keyC; @try { line = [socket readLine]; @@ -546,10 +546,14 @@ tmp++; } while (*tmp == ' '); value = [OFString stringWithUTF8String: tmp]; + old = [serverHeaders objectForKey: key]; + if (old != nil) + value = [old stringByAppendingFormat: @",%@", value]; + [serverHeaders setObject: value forKey: key]; } [serverHeaders makeImmutable]; Index: src/OFHTTPServer.m ================================================================== --- src/OFHTTPServer.m +++ src/OFHTTPServer.m @@ -451,11 +451,11 @@ return true; } - (bool)parseHeaders: (OFString*)line { - OFString *key, *value; + OFString *key, *value, *old; size_t pos; if ([line length] == 0) { intmax_t contentLength; @@ -497,10 +497,14 @@ of_range(pos + 1, [line length] - pos - 1)]; key = normalizedKey([key stringByDeletingTrailingWhitespaces]); value = [value stringByDeletingLeadingWhitespaces]; + old = [_headers objectForKey: key]; + if (old != nil) + value = [old stringByAppendingFormat: @",%@", value]; + [_headers setObject: value forKey: key]; if ([key isEqual: @"Host"]) { pos = [value