Project

General

Profile

Actions

Bug #862

open

DIMSE_findUser() does not properly handle DIMSE_NONBLOCKING

Added by Marco Eichelberg over 6 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Library
Target version:
-
Start date:
2018-12-10
Due date:
% Done:

0%

Estimated time:
Module:
dcmnet
Operating System:
Compiler:

Description

When I call DIMSE_findUser() with DIMSE_NONBLOCKING, it does not honor the non-blocking directive and instead blocks for a long time which causes our UI to hang. DCMTK is blocks until complete, ignoring DIMSE_NONBLOCKING. See code snippet below:

//  this code calls DIMSE_findUser() which blocks until done, the DIMSE_NONBLOCKING flag
//  is not honored.  If I put 0 for a timeout I get an error. This code blocks until done

const auto cond = DIMSE_findUser(m_assoc,
    static_cast<T_ASC_PresentationContextID>(nPresentationID),
    &request, &m_dataset,
    responseCount,
    _FindUserCallback, this,
    DIMSE_NONBLOCKING, m_nResponseTimeout / 1000,
    &response, &statusDetail);

If I set [the timeout] to 0 (which makes sense for non-blocking) it returns with an error, "error non-blocking with 0 timeout" or something like that. If I set it to 100, it complains depending on the number of records. If I set it to 200, I think it fails find all the records, for cases where there are many records or a slower network connection.

Reported 2018-12-03 by Richard Breen <>


Related issues 1 (1 open0 closed)

Related to DCMTK - Bug #395: More possible timeout problems in the networking module...New

Actions
Actions #1

Updated by Jörg Riesmeier over 6 years ago

  • Related to Bug #395: More possible timeout problems in the networking module... added
Actions

Also available in: Atom PDF