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; }
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; }