-
Notifications
You must be signed in to change notification settings - Fork 43
Open
Labels
Description
For certain SAML traces it occured to me than the export return an empty file (in fact a file with "null" inside).
An error raises here:
const createFromJSON = function(obj) {
let stringified = JSON.stringify(obj);
return JSON.parse(stringified);
};
const enrichWithResponse = (req, res) => {
let responseCopy = createFromJSON(res);
req.responseStatus = responseCopy.statusCode;
req.responseStatusText = responseCopy.statusLine;
req.responseHeaders = responseCopy.responseHeaders;
};
let reqscopy = reqs.map(req => {
let newRequest = createFromJSON(req);
enrichWithResponse(newRequest, req.getResponse());
the_filters.forEach(filter => filter(newRequest));
return newRequest;
});
When trying to stringify "req.getResponse()" when it returns null.
I wonder if it would be a good solution to alter this:
'attachHeadersToRequest' : function(request) { // onBeforeSendHeaders
let uniqueRequestId = new SAMLTrace.UniqueRequestId(request.requestId, request.method, request.url);
uniqueRequestId.create(id => {
let tracer = SAMLTrace.TraceWindow.instance();
// Maybe revise the HTTP method on redirected requests
let alterationResult = tracer.reviseRedirectedRequestMethod(request, id);
id = alterationResult.id;
let entry = tracer.httpRequests.find(req => req.id === id);
if (!entry) {
// Skip further execution if no precedingly issued request can be found. This may occur, if tracing
// new requests is paused. Requests that were issued before pausing will be found and handled.
return;
}
entry.headers = request.requestHeaders;
tracer.addRequestItem(entry, () => entry.res);
tracer.updateStatusBar();
});
},
In particular:
tracer.addRequestItem(entry, () => entry.res);
to
tracer.addRequestItem(entry, () => entry.res || {});
or so
So the whole trace can be exported dispite one of them acts oddly.