@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
- A release from
main, both flavours (plain + -s3).
- 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.
- 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.
@nickamzol: every published image hangs on DIMSE peers that send SOP Class Extended Negotiation in the A-ASSOCIATE-AC.
mainalready 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.0x56with an extra 2-byte length before that field, which PS3.7 D.3.3.5 does not define (pdu/reader.rs, the0x56branch).Ok(None).read_pdu_from_wiretreats 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.1and3.0.1-s3all link dicom-ul 0.9.0 (checked in the binaries).mainhas dicom-rs 0.10 (#67).Requests
main, both flavours (plain +-s3).read_timeout/write_timeouton the clientClientAssociationOptions(association/client.rs), e.g. from the pool timeout, so a stuck establish fails fast with an error instead of waiting for the peer.v3.0.1the unsuffixedDockerfilebuilds without--features s3, and its binary has no S3 code.