diff --git a/src/DsRestAPI/EPTF_CLL_DsRestAPI_DSServer_Functions.ttcn b/src/DsRestAPI/EPTF_CLL_DsRestAPI_DSServer_Functions.ttcn
index d89bb25..f1d6529 100644
--- a/src/DsRestAPI/EPTF_CLL_DsRestAPI_DSServer_Functions.ttcn
+++ b/src/DsRestAPI/EPTF_CLL_DsRestAPI_DSServer_Functions.ttcn
@@ -736,19 +736,21 @@
         f_EPTF_FBQ_moveFromBusyToFreeTail(pl_transactionid, v_DsRestAPI_DSServer_responseQueue);
       } else {
         // else we insert the response and send its child requests if we do not filter it
-        var EPTF_DsRestAPI_Request vl_request := pl_requests[pl_responseData.path[pl_nextPathIndex]];
-        if (ischosen(vl_request.getData) and ispresent(vl_request.getData.filter) and pl_responseData.checkPostFilter and not ispresent(vl_request.getData.selectionValues) and (ischosen(pl_contentToInsert.node) or (ischosen(pl_contentToInsert.list) and sizeof(pl_contentToInsert.list) > 0))) {
-          f_EPTF_DsRestAPI_DSServer_sendPostFilter(pl_transactionid, pl_errorCode, pl_responseData.parentList, pl_responseData.parentIndexList, pl_contentToInsert, vl_request.getData.filter);
-        } else {
-          pl_contentList[pl_responseData.path[pl_nextPathIndex]] := pl_contentToInsert;
-          f_EPTF_FBQ_moveFromBusyToFreeTail(pl_transactionid, v_DsRestAPI_DSServer_responseQueue);
-          // TODO cookie can be inserted here
-          if (ischosen(pl_contentToInsert.list) or pl_contentToInsert.node.tp != 0) {
-            if (ischosen(vl_request.getData) and ispresent(vl_request.getData.writableInfo)) {
-              f_EPTF_DsRestAPI_DSServer_sendIsWriteableRequest(pl_responseData.requestId, vl_request, pl_responseData.parentList, pl_responseData.parentIndexList, pl_responseData.path, pl_responseData.indexesInList);
-            }
-            if (ischosen(vl_request.getData) and ispresent(vl_request.getData.children) and pl_errorCode == 0) {
-              f_EPTF_DsRestAPI_DSServer_prepareAndSendChildRequests(pl_responseData.requestId, vl_request, pl_contentToInsert, pl_responseData.parentList, pl_responseData.parentIndexList, pl_responseData.path, pl_responseData.indexesInList);
+        if (pl_responseData.path[pl_nextPathIndex] < sizeof(pl_requests)) {
+          var EPTF_DsRestAPI_Request vl_request := pl_requests[pl_responseData.path[pl_nextPathIndex]];
+          if (ischosen(vl_request.getData) and ispresent(vl_request.getData.filter) and pl_responseData.checkPostFilter and not ispresent(vl_request.getData.selectionValues) and (ischosen(pl_contentToInsert.node) or (ischosen(pl_contentToInsert.list) and sizeof(pl_contentToInsert.list) > 0))) {
+            f_EPTF_DsRestAPI_DSServer_sendPostFilter(pl_transactionid, pl_errorCode, pl_responseData.parentList, pl_responseData.parentIndexList, pl_contentToInsert, vl_request.getData.filter);
+          } else {
+            pl_contentList[pl_responseData.path[pl_nextPathIndex]] := pl_contentToInsert;
+            f_EPTF_FBQ_moveFromBusyToFreeTail(pl_transactionid, v_DsRestAPI_DSServer_responseQueue);
+            // TODO cookie can be inserted here
+            if (ischosen(pl_contentToInsert.list) or pl_contentToInsert.node.tp != 0) {
+              if (ischosen(vl_request.getData) and ispresent(vl_request.getData.writableInfo)) {
+                f_EPTF_DsRestAPI_DSServer_sendIsWriteableRequest(pl_responseData.requestId, vl_request, pl_responseData.parentList, pl_responseData.parentIndexList, pl_responseData.path, pl_responseData.indexesInList);
+              }
+              if (ischosen(vl_request.getData) and ispresent(vl_request.getData.children) and pl_errorCode == 0) {
+                f_EPTF_DsRestAPI_DSServer_prepareAndSendChildRequests(pl_responseData.requestId, vl_request, pl_contentToInsert, pl_responseData.parentList, pl_responseData.parentIndexList, pl_responseData.path, pl_responseData.indexesInList);
+              }
             }
           }
         }
