Skip to content

Commit f93b74c

Browse files
committed
fix(http): properly close stream when connection is set to 'close'
1 parent 2ce00ed commit f93b74c

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

src/Net/Http/Server/Connection.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,15 +245,13 @@ private function onRequest(array $reqInfo): void
245245
// 半关闭检测
246246
$connHeader = $reqInfo['server']['HTTP_CONNECTION'] ?? '';
247247
$upgradeHeader = $reqInfo['server']['HTTP_UPGRADE'] ?? '';
248-
$keepAlive = strtolower($connHeader) === 'keep-alive';
249-
$isWebSocketUpgrade = strtolower($upgradeHeader) === 'websocket' &&
250-
str_contains(strtolower($connHeader), 'upgrade');
248+
$keepAlive = strtolower($connHeader) !== 'close';
249+
$isWebSocketUpgrade = strtolower($upgradeHeader) === 'websocket' && str_contains(strtolower($connHeader), 'upgrade');
251250

252251
if ($keepAlive || $isWebSocketUpgrade) {
253252
$response->withHeader('Connection', $keepAlive ? 'keep-alive' : 'Upgrade');
254253
} else {
255254
$response->withHeader('Connection', 'close');
256-
$this->stream->shutdownRead();
257255
}
258256

259257
try {
@@ -263,6 +261,8 @@ private function onRequest(array $reqInfo): void
263261
} catch (Throwable $exception) {
264262
$req->respond($exception->getMessage(), [], 500);
265263
$this->reset();
264+
} finally {
265+
($keepAlive || $isWebSocketUpgrade) || $this->disconnect();
266266
}
267267
}
268268

0 commit comments

Comments
 (0)