comparison OrthancServer/Internals/CommandDispatcher.cpp @ 661:d233b5090105

accept more transfer syntaxes for C-Store SCP, write meta-header when receiving files
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 05 Nov 2013 17:41:25 +0100
parents 4aa6f0d79947
children 41b3e5ccb291
comparison
equal deleted inserted replaced
660:f0232774b913 661:d233b5090105
238 if (server.HasMoveRequestHandlerFactory()) 238 if (server.HasMoveRequestHandlerFactory())
239 { 239 {
240 knownAbstractSyntaxes.push_back(UID_MOVEStudyRootQueryRetrieveInformationModel); 240 knownAbstractSyntaxes.push_back(UID_MOVEStudyRootQueryRetrieveInformationModel);
241 } 241 }
242 242
243 const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
244 int numTransferSyntaxes = 0;
245
246 cond = ASC_receiveAssociation(net, &assoc, 243 cond = ASC_receiveAssociation(net, &assoc,
247 /*opt_maxPDU*/ ASC_DEFAULTMAXPDU, 244 /*opt_maxPDU*/ ASC_DEFAULTMAXPDU,
248 NULL, NULL, 245 NULL, NULL,
249 /*opt_secureConnection*/ OFFalse, 246 /*opt_secureConnection*/ OFFalse,
250 DUL_NOBLOCK, 1); 247 DUL_NOBLOCK, 1);
265 return NULL; 262 return NULL;
266 } 263 }
267 264
268 LOG(INFO) << "Association Received"; 265 LOG(INFO) << "Association Received";
269 266
270 transferSyntaxes[0] = UID_LittleEndianExplicitTransferSyntax; 267 std::vector<const char*> transferSyntaxes;
271 transferSyntaxes[1] = UID_BigEndianExplicitTransferSyntax; 268
272 transferSyntaxes[2] = UID_LittleEndianImplicitTransferSyntax; 269 #if 0
273 numTransferSyntaxes = 3; 270 // This is the list of the transfer syntaxes that were supported up to Orthanc 0.7.1
271 transferSyntaxes.push_back(UID_LittleEndianExplicitTransferSyntax);
272 transferSyntaxes.push_back(UID_BigEndianExplicitTransferSyntax);
273 transferSyntaxes.push_back(UID_LittleEndianImplicitTransferSyntax);
274 #else
275 transferSyntaxes.push_back(UID_LittleEndianImplicitTransferSyntax);
276 transferSyntaxes.push_back(UID_DeflatedExplicitVRLittleEndianTransferSyntax);
277 transferSyntaxes.push_back(UID_JPEGProcess1TransferSyntax);
278 transferSyntaxes.push_back(UID_JPEGProcess2_4TransferSyntax);
279 transferSyntaxes.push_back(UID_JPEGProcess3_5TransferSyntax);
280 transferSyntaxes.push_back(UID_JPEGProcess6_8TransferSyntax);
281 transferSyntaxes.push_back(UID_JPEGProcess7_9TransferSyntax);
282 transferSyntaxes.push_back(UID_JPEGProcess10_12TransferSyntax);
283 transferSyntaxes.push_back(UID_JPEGProcess11_13TransferSyntax);
284 transferSyntaxes.push_back(UID_JPEGProcess14TransferSyntax);
285 transferSyntaxes.push_back(UID_JPEGProcess15TransferSyntax);
286 transferSyntaxes.push_back(UID_JPEGProcess16_18TransferSyntax);
287 transferSyntaxes.push_back(UID_JPEGProcess17_19TransferSyntax);
288 transferSyntaxes.push_back(UID_JPEGProcess20_22TransferSyntax);
289 transferSyntaxes.push_back(UID_JPEGProcess21_23TransferSyntax);
290 transferSyntaxes.push_back(UID_JPEGProcess24_26TransferSyntax);
291 transferSyntaxes.push_back(UID_JPEGProcess25_27TransferSyntax);
292 transferSyntaxes.push_back(UID_JPEGProcess28TransferSyntax);
293 transferSyntaxes.push_back(UID_JPEGProcess29TransferSyntax);
294 transferSyntaxes.push_back(UID_JPEGProcess14SV1TransferSyntax);
295 transferSyntaxes.push_back(UID_JPEGLSLosslessTransferSyntax);
296 transferSyntaxes.push_back(UID_JPEGLSLossyTransferSyntax);
297 transferSyntaxes.push_back(UID_JPEG2000LosslessOnlyTransferSyntax);
298 transferSyntaxes.push_back(UID_JPEG2000TransferSyntax);
299 transferSyntaxes.push_back(UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax);
300 transferSyntaxes.push_back(UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax);
301 transferSyntaxes.push_back(UID_JPIPReferencedTransferSyntax);
302 transferSyntaxes.push_back(UID_JPIPReferencedDeflateTransferSyntax);
303 transferSyntaxes.push_back(UID_MPEG2MainProfileAtMainLevelTransferSyntax);
304 transferSyntaxes.push_back(UID_MPEG2MainProfileAtHighLevelTransferSyntax);
305 transferSyntaxes.push_back(UID_RLELosslessTransferSyntax);
306 #endif
274 307
275 /* accept the Verification SOP Class if presented */ 308 /* accept the Verification SOP Class if presented */
276 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, &knownAbstractSyntaxes[0], knownAbstractSyntaxes.size(), transferSyntaxes, numTransferSyntaxes); 309 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, &knownAbstractSyntaxes[0], knownAbstractSyntaxes.size(), &transferSyntaxes[0], transferSyntaxes.size());
277 if (cond.bad()) 310 if (cond.bad())
278 { 311 {
279 LOG(INFO) << cond.text(); 312 LOG(INFO) << cond.text();
280 AssociationCleanup(assoc); 313 AssociationCleanup(assoc);
281 return NULL; 314 return NULL;
282 } 315 }
283 316
284 /* the array of Storage SOP Class UIDs comes from dcuid.h */ 317 /* the array of Storage SOP Class UIDs comes from dcuid.h */
285 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs, transferSyntaxes, numTransferSyntaxes); 318 cond = ASC_acceptContextsWithPreferredTransferSyntaxes( assoc->params, dcmAllStorageSOPClassUIDs, numberOfAllDcmStorageSOPClassUIDs, &transferSyntaxes[0], transferSyntaxes.size());
286 if (cond.bad()) 319 if (cond.bad())
287 { 320 {
288 LOG(INFO) << cond.text(); 321 LOG(INFO) << cond.text();
289 AssociationCleanup(assoc); 322 AssociationCleanup(assoc);
290 return NULL; 323 return NULL;
291 } 324 }
292 325
293 #if ORTHANC_PROMISCUOUS == 1 326 #if ORTHANC_PROMISCUOUS == 1
294 /* accept everything not known not to be a storage SOP class */ 327 /* accept everything not known not to be a storage SOP class */
295 cond = acceptUnknownContextsWithPreferredTransferSyntaxes( 328 cond = acceptUnknownContextsWithPreferredTransferSyntaxes(
296 assoc->params, transferSyntaxes, numTransferSyntaxes); 329 assoc->params, &transferSyntaxes[0], transferSyntaxes.size());
297 if (cond.bad()) 330 if (cond.bad())
298 { 331 {
299 LOG(INFO) << cond.text(); 332 LOG(INFO) << cond.text();
300 AssociationCleanup(assoc); 333 AssociationCleanup(assoc);
301 return NULL; 334 return NULL;