Skip to content

requestDataがFileパケット応答に対してresolveしない #58

@9c5s

Description

@9c5s

概要

requestData(ArtworkData, layer) が Request パケットを送信後、応答が File (MessageType=204) パケットで返ってくるが、pending request のマッチングが機能せず Promise が永久にハングする。

再現手順

  1. TCNASDP認証を有効にして接続
  2. await client.requestData(TCNetDataPacketType.ArtworkData, layer) を実行
  3. Promise が resolve/reject されず永久にハングする

原因

requestData は pending request を dataType-layer キーで登録し、受信パケットとマッチングする。しかし Artwork の応答は File (MessageType=204) パケットで返ってくるため、Data (MessageType=200) パケットを期待するマッチングロジックに合致しない。

応答データは data イベントとして発火するが、pending request は消費されないまま残り、requestTimeout も発火しない。

期待動作

File (204) パケットの応答も pending request とマッチングし、Promise が正しく resolve される。または requestTimeout が確実に発火して reject される。

ワークアラウンド

tcnet-viewer 側では requestData を fire-and-forget にし、data イベントハンドラで Artwork データを処理している。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions