Skip to content

Commit 38ff08a

Browse files
authored
Merge pull request #2171 from MGatner/setheader-dupes
Setheader dupes
2 parents cd8b056 + ab09bbe commit 38ff08a

2 files changed

Lines changed: 18 additions & 17 deletions

File tree

system/HTTP/Message.php

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -266,23 +266,16 @@ public function getHeaderLine(string $name): string
266266
*/
267267
public function setHeader(string $name, $value)
268268
{
269-
if (! isset($this->headers[$name]))
269+
$origName = $this->getHeaderName($name);
270+
271+
if (isset($this->headers[$origName]) && is_array($this->headers[$origName]))
270272
{
271-
$this->headers[$name] = new Header($name, $value);
272-
273-
$this->headerMap[strtolower($name)] = $name;
274-
275-
return $this;
276-
}
277-
278-
if (! is_array($this->headers[$name]))
279-
{
280-
$this->headers[$name] = [$this->headers[$name]];
273+
$this->appendHeader($origName, $value);
281274
}
282-
283-
if (isset($this->headers[$name]))
275+
else
284276
{
285-
$this->headers[$name] = new Header($name, $value);
277+
$this->headers[$origName] = new Header($origName, $value);
278+
$this->headerMap[strtolower($origName)] = $origName;
286279
}
287280

288281
return $this;

tests/system/HTTP/MessageTest.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,17 +181,25 @@ public function testAppendBody()
181181

182182
public function testSetHeaderReplacingHeader()
183183
{
184-
$this->message->setHeader('Accept', 'json');
184+
$this->message->setHeader('Accept', 'json');
185185

186-
$this->assertEquals('json', $this->message->getHeaderLine('Accept'));
186+
$this->assertEquals('json', $this->message->getHeaderLine('Accept'));
187187
}
188188

189189
public function testSetHeaderDuplicateSettings()
190190
{
191191
$this->message->setHeader('Accept', 'json');
192192
$this->message->setHeader('Accept', 'xml');
193193

194-
$this->assertEquals('xml', $this->message->getHeaderLine('Accept'));
194+
$this->assertEquals('xml', $this->message->getHeaderLine('Accept'));
195+
}
196+
197+
public function testSetHeaderDuplicateSettingsInsensitive()
198+
{
199+
$this->message->setHeader('Accept', 'json');
200+
$this->message->setHeader('accept', 'xml');
201+
202+
$this->assertEquals('xml', $this->message->getHeaderLine('Accept'));
195203
}
196204

197205
public function testSetHeaderArrayValues()

0 commit comments

Comments
 (0)