aboutsummaryrefslogtreecommitdiff
path: root/ServiceStack
diff options
context:
space:
mode:
Diffstat (limited to 'ServiceStack')
-rw-r--r--ServiceStack/Host/RestHandler.cs36
-rw-r--r--ServiceStack/ServiceStackHost.Runtime.cs21
2 files changed, 8 insertions, 49 deletions
diff --git a/ServiceStack/Host/RestHandler.cs b/ServiceStack/Host/RestHandler.cs
index 5c360d150..1eae6be38 100644
--- a/ServiceStack/Host/RestHandler.cs
+++ b/ServiceStack/Host/RestHandler.cs
@@ -23,32 +23,13 @@ namespace ServiceStack.Host
var taskResult = ServiceStackHost.Instance.GetTaskResult(taskResponse, RequestName);
- var taskResults = taskResult as Task[];
-
- if (taskResults == null)
- {
- var subTask = taskResult as Task;
- if (subTask != null)
- taskResult = ServiceStackHost.Instance.GetTaskResult(subTask, RequestName);
-
- return taskResult;
- }
-
- if (taskResults.Length == 0)
+ var subTask = taskResult as Task;
+ if (subTask != null)
{
- return new object[] { };
+ taskResult = ServiceStackHost.Instance.GetTaskResult(subTask, RequestName);
}
- var firstResponse = ServiceStackHost.Instance.GetTaskResult(taskResults[0], RequestName);
- var batchedResponses = firstResponse != null
- ? (object[])Array.CreateInstance(firstResponse.GetType(), taskResults.Length)
- : new object[taskResults.Length];
- batchedResponses[0] = firstResponse;
- for (var i = 1; i < taskResults.Length; i++)
- {
- batchedResponses[i] = ServiceStackHost.Instance.GetTaskResult(taskResults[i], RequestName);
- }
- return batchedResponses;
+ return taskResult;
}
protected static object CreateContentTypeRequest(IRequest httpReq, Type requestType, string contentType)
@@ -141,18 +122,13 @@ namespace ServiceStack.Host
var request = httpReq.Dto = CreateRequest(httpReq, restPath);
- if (appHost.ApplyRequestFilters(httpReq, httpRes, request))
- return;
+ appHost.ApplyRequestFilters(httpReq, httpRes, request);
var rawResponse = await ServiceStackHost.Instance.ServiceController.Execute(request, httpReq).ConfigureAwait(false);
- if (httpRes.IsClosed)
- return;
-
var response = await HandleResponseAsync(rawResponse).ConfigureAwait(false);
- if (appHost.ApplyResponseFilters(httpReq, httpRes, response))
- return;
+ appHost.ApplyResponseFilters(httpReq, httpRes, response);
await httpRes.WriteToResponse(httpReq, response).ConfigureAwait(false);
}
diff --git a/ServiceStack/ServiceStackHost.Runtime.cs b/ServiceStack/ServiceStackHost.Runtime.cs
index 1a1656a0e..aaa50633b 100644
--- a/ServiceStack/ServiceStackHost.Runtime.cs
+++ b/ServiceStack/ServiceStackHost.Runtime.cs
@@ -14,10 +14,8 @@ namespace ServiceStack
/// and no more processing should be done.
/// </summary>
/// <returns></returns>
- public virtual bool ApplyRequestFilters(IRequest req, IResponse res, object requestDto)
+ public virtual void ApplyRequestFilters(IRequest req, IResponse res, object requestDto)
{
- if (res.IsClosed) return res.IsClosed;
-
//Exec all RequestFilter attributes with Priority < 0
var attributes = FilterAttributeCache.GetRequestFilterAttributes(requestDto.GetType());
var i = 0;
@@ -25,16 +23,12 @@ namespace ServiceStack
{
var attribute = attributes[i];
attribute.RequestFilter(req, res, requestDto);
- if (res.IsClosed) return res.IsClosed;
}
- if (res.IsClosed) return res.IsClosed;
-
//Exec global filters
foreach (var requestFilter in GlobalRequestFilters)
{
requestFilter(req, res, requestDto);
- if (res.IsClosed) return res.IsClosed;
}
//Exec remaining RequestFilter attributes with Priority >= 0
@@ -42,10 +36,7 @@ namespace ServiceStack
{
var attribute = attributes[i];
attribute.RequestFilter(req, res, requestDto);
- if (res.IsClosed) return res.IsClosed;
}
-
- return res.IsClosed;
}
/// <summary>
@@ -53,21 +44,13 @@ namespace ServiceStack
/// and no more processing should be done.
/// </summary>
/// <returns></returns>
- public virtual bool ApplyResponseFilters(IRequest req, IResponse res, object response)
+ public virtual void ApplyResponseFilters(IRequest req, IResponse res, object response)
{
- if (response != null)
- {
- if (res.IsClosed) return res.IsClosed;
- }
-
//Exec global filters
foreach (var responseFilter in GlobalResponseFilters)
{
responseFilter(req, res, response);
- if (res.IsClosed) return res.IsClosed;
}
-
- return res.IsClosed;
}
}