Mercurial > hg > orthanc
diff OrthancServer/DicomProtocol/DicomUserConnection.cpp @ 2069:fabf7820d1f1
New configuration options: "DicomScuTimeout" and "DicomScpTimeout" + validation of non-negative options
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 13 Jul 2016 16:52:39 +0200 |
parents | 655489d9165d |
children | b9bd52c72ba2 |
line wrap: on
line diff
--- a/OrthancServer/DicomProtocol/DicomUserConnection.cpp Wed Jul 13 16:10:25 2016 +0200 +++ b/OrthancServer/DicomProtocol/DicomUserConnection.cpp Wed Jul 13 16:52:39 2016 +0200 @@ -133,6 +133,9 @@ namespace Orthanc { + // By default, the timeout for DICOM SCU (client) connections is set to 10 seconds + static uint32_t defaultTimeout_ = 10; + struct DicomUserConnection::PImpl { // Connection state @@ -782,7 +785,7 @@ remotePort_ = 104; manufacturer_ = ModalityManufacturer_Generic; - SetTimeout(10); + SetTimeout(defaultTimeout_); pimpl_->net_ = NULL; pimpl_->params_ = NULL; pimpl_->assoc_ = NULL; @@ -1102,14 +1105,16 @@ void DicomUserConnection::SetTimeout(uint32_t seconds) { - if (seconds <= 0) + if (seconds == 0) { - throw OrthancException(ErrorCode_ParameterOutOfRange); + DisableTimeout(); } - - dcmConnectionTimeout.set(seconds); - pimpl_->dimseTimeout_ = seconds; - pimpl_->acseTimeout_ = 10; + else + { + dcmConnectionTimeout.set(seconds); + pimpl_->dimseTimeout_ = seconds; + pimpl_->acseTimeout_ = 10; // Timeout used during association negociation + } } @@ -1121,7 +1126,7 @@ */ dcmConnectionTimeout.set(-1); pimpl_->dimseTimeout_ = 0; - pimpl_->acseTimeout_ = 10; + pimpl_->acseTimeout_ = 10; // Timeout used during association negociation } @@ -1191,4 +1196,12 @@ ExecuteFind(result, pimpl_->assoc_, dataset, sopClass, true, NULL, pimpl_->dimseTimeout_); } + + + void DicomUserConnection::SetDefaultTimeout(uint32_t seconds) + { + LOG(INFO) << "Default timeout for DICOM connections if Orthanc acts as SCU (client): " + << seconds << " seconds (0 = no timeout)"; + defaultTimeout_ = seconds; + } }