Skip to content

DIMSE client hangs when the peer's A-ASSOCIATE-AC contains SOP Class Extended Negotiation (dicom-ul 0.9.0) — please release main #70

Description

@alexluft

@nickamzol: every published image hangs on DIMSE peers that send SOP Class Extended Negotiation in the A-ASSOCIATE-AC. main already has the fix; could you cut a release?

Symptom: against a DCMTK-based PACS, every QIDO/WADO fails the same way. The pool times out, and the association ends only when the peer closes the idle connection (60 s here) with ClientAssociation: Failed to connect: Connection closed by peer. No C-FIND is ever sent.

Cause: the peer's A-ASSOCIATE-AC carries a SOP Class Extended Negotiation sub-item (0x56, not proposed by us) with 1 byte of service-class application information.

  • dicom-ul 0.9.0 parses 0x56 with an extra 2-byte length before that field, which PS3.7 D.3.3.5 does not define (pdu/reader.rs, the 0x56 branch).
  • It finds only 1 byte, so it returns Ok(None).
  • read_pdu_from_wire treats that as an incomplete PDU and keeps reading until the peer closes.

Fixed in dicom-ul 0.9.1 / 0.10.0 (item_length - 2 - uid_length).

Released images: 0.3.0-s3, 3.0.1 and 3.0.1-s3 all link dicom-ul 0.9.0 (checked in the binaries). main has dicom-rs 0.10 (#67).

Requests

  1. A release from main, both flavours (plain + -s3).
  2. Set read_timeout/write_timeout on the client ClientAssociationOptions (association/client.rs), e.g. from the pool timeout, so a stuck establish fails fast with an error instead of waiting for the peer.
  3. Question: is the plain image meant to include S3? At v3.0.1 the unsuffixed Dockerfile builds without --features s3, and its binary has no S3 code.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions