Skip to content

fix: WebSocketのペイロードが0の場合に受信したパケットを送信しない問題を修正#241

Merged
funa-tk merged 3 commits intoDeNA:masterfrom
taka2233:fix/websocket-empty-payload
Apr 13, 2026
Merged

fix: WebSocketのペイロードが0の場合に受信したパケットを送信しない問題を修正#241
funa-tk merged 3 commits intoDeNA:masterfrom
taka2233:fix/websocket-empty-payload

Conversation

@taka2233
Copy link
Copy Markdown
Contributor

@taka2233 taka2233 commented Apr 13, 2026

ペイロード長が0のWebSocketフレームをPacketProxyが受信後に送信していなかったので修正しました。

Simplexのメインループは callOnChunkAvailable() の戻り値が null またはlength == 0 のときにループを終了する設計になっています。
WebSocketのペイロード長0のフレームを受信すると、パケットがドロップされていました。

for (byte[] available_data = callOnChunkAvailable(); available_data != null
&& available_data.length > 0; available_data = callOnChunkAvailable()) {

修正がEncodeHTTPWebSocket 内で完結するように、空のペイロードはプレースホルダーで置換して表示するようにしました。
空ペイロードを (empty WebSocket frame) に置換して通過させ、encode時にゼロバイトに戻しています。

  • 受信/デコード時: 空ペイロードを (empty WebSocket frame) に置換

  • 送信/エンコード時: プレースホルダーを byte[0] に復元

  • Intercept対応: ユーザーがプレースホルダーを別のテキストに編集した場合、その内容がそのまま送信されます

  • By placing an "x" in the box, I hereby understand, accept and agree to be bound by the terms and conditions of the Contribution License Agreement.

@taka2233 taka2233 changed the title fix: ペイロードが0の場合に受信したパケットを送信しない問題を修正 fix: WebSocketのペイロードが0の場合に受信したパケットを送信しない問題を修正 Apr 13, 2026
@taka2233 taka2233 marked this pull request as ready for review April 13, 2026 09:29
@funa-tk
Copy link
Copy Markdown
Contributor

funa-tk commented Apr 13, 2026

ありがとうございます!
マージします

@funa-tk funa-tk merged commit acb391e into DeNA:master Apr 13, 2026
1 check passed
@taka2233 taka2233 deleted the fix/websocket-empty-payload branch April 14, 2026 02:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants