コード例 #1
0
ファイル: srv1.c プロジェクト: bhavik86/Dicom
static DUL_TRANSFERSYNTAX*
matchProposedXferSyntax(DUL_PRESENTATIONCONTEXT* requestedCtx, const char* prefix, char** xferSyntaxes, int xferSyntaxCount)
{
  char** 				xferSyntaxesLocal = 0;
  DUL_TRANSFERSYNTAX* 	transfer;
  int 					found = 0;
  int 					idx;

  if (xferSyntaxCount == 0) {
	  char* paramValue;
	  char paramName[1024] = "";
	  strcpy(paramName, prefix);
	  strcat(paramName, "/");
	  strcat(paramName, requestedCtx->abstractSyntax);

	  paramValue = UTL_GetConfigParameter(paramName);
	  if (paramValue == NULL) paramValue = DICOM_TRANSFERLITTLEENDIAN;

	  xferSyntaxesLocal = UTL_ExpandToPointerArray(paramValue, ";", &xferSyntaxCount);
  }else{
	  xferSyntaxesLocal = xferSyntaxes;
  }

  for (idx = 0; (idx < xferSyntaxCount) && !found; idx++) {
	  transfer = (DUL_TRANSFERSYNTAX*)LST_Head(&requestedCtx->proposedTransferSyntax);
	  (void) LST_Position(&requestedCtx->proposedTransferSyntax, transfer);

	  while (transfer != NULL) {
		  if (strcmp(transfer->transferSyntax, xferSyntaxesLocal[idx]) == 0) {
			  found = 1;
			  break;
		  }else{
			  transfer = LST_Next(&requestedCtx->proposedTransferSyntax);
		  }
	  }
  }

  if (xferSyntaxesLocal != xferSyntaxes) CTN_FREE(xferSyntaxesLocal);

  return transfer;
}
コード例 #2
0
ファイル: srv1.c プロジェクト: stl-steve-moore/ctn
static DUL_TRANSFERSYNTAX*
matchProposedXferSyntax(DUL_PRESENTATIONCONTEXT* requestedCtx,
			const char* prefix,
			char** xferSyntaxes, int xferSyntaxCount)
{
  char** xferSyntaxesLocal = 0;
  int singleMode = 0;
  DUL_TRANSFERSYNTAX* transfer;
  int found = 0;
  int idx;

  if (xferSyntaxCount == 0) {
    char* paramValue;
    char paramName[1024] = "";
    strcpy(paramName, prefix);
    strcat(paramName, "/");
    strcat(paramName, requestedCtx->abstractSyntax);

    paramValue = UTL_GetConfigParameter(paramName);
    if (paramValue == NULL)
      paramValue = DICOM_TRANSFERLITTLEENDIAN;

    xferSyntaxesLocal = UTL_ExpandToPointerArray(paramValue, ";", &xferSyntaxCount);
  } else {
    xferSyntaxesLocal = xferSyntaxes;
  }

  for (idx = 0; (idx < xferSyntaxCount) && !found; idx++) {
    transfer = (DUL_TRANSFERSYNTAX*)LST_Head(&requestedCtx->proposedTransferSyntax);
    (void) LST_Position(&requestedCtx->proposedTransferSyntax, transfer);
    while (transfer != NULL) {
//	  COND_PushCondition(0, "%s %s", transfer->transferSyntax, xferSyntaxesLocal[idx]); /*repair*/
      if (strcmp(transfer->transferSyntax, xferSyntaxesLocal[idx]) == 0) {
	found = 1;
	break;
      }
      else
	transfer = LST_Next(&requestedCtx->proposedTransferSyntax);
    }
  }

  if (!found) {
	  DUL_TRANSFERSYNTAX* x;
	  x = (DUL_TRANSFERSYNTAX*)LST_Head(&requestedCtx->proposedTransferSyntax);
	  (void)LST_Position(&requestedCtx->proposedTransferSyntax, x);
	  while (x != NULL) {
		  COND_PushCondition(SRV_REQUESTEDXFER, "SRV REQUESTED transfer syntax: %s",
			  x->transferSyntax);
		  x = (DUL_TRANSFERSYNTAX*)LST_Next(&requestedCtx->proposedTransferSyntax);
	  }
	  for (idx = 0; (idx < xferSyntaxCount) && !found; idx++) {
		  COND_PushCondition(SRV_SUPPORTEDXFER, "SRV Supported transfer syntax: %s",
			  xferSyntaxesLocal[idx]);
	  }
	  transfer = 0;
  }

  if (xferSyntaxesLocal != xferSyntaxes) {
    CTN_FREE(xferSyntaxesLocal);
  }
  return transfer;
}