Skip to content

Commit d257205

Browse files
committed
PR feedback
1 parent dd1f04a commit d257205

File tree

9 files changed

+28
-34
lines changed

9 files changed

+28
-34
lines changed

src/Servers/HttpSys/src/DelegationRule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ internal DelegationRule(string queueName, string urlPrefix, ILogger logger)
2828
_logger = logger;
2929
QueueName = queueName;
3030
UrlPrefix = urlPrefix;
31-
Queue = new RequestQueue(null, queueName, UrlPrefix, _logger, receiver: true);
31+
Queue = new RequestQueue(queueName, UrlPrefix, _logger, receiver: true);
3232
}
3333

3434
public void Dispose()

src/Servers/HttpSys/src/IHttpSysRequestTransferFeature.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ public interface IHttpSysRequestTransferFeature
1111
bool IsTransferable { get; }
1212

1313
/// <summary>
14-
/// Attempt to transfer the request to another HttpSys request queue. The request body
15-
/// must not be read before this is invoked. Check <see cref="IsTransferable"/>
14+
/// Attempt to transfer the request to another Http.Sys request queue. The request body
15+
/// must not be read nor the response started before this is invoked. Check <see cref="IsTransferable"/>
1616
/// before invoking.
1717
/// </summary>
1818
void TransferRequest(DelegationRule destination);

src/Servers/HttpSys/src/NativeInterop/HttpApi.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,7 @@ internal static bool IsFeatureSupported(HTTP_FEATURE_ID feature)
160160
{
161161
try
162162
{
163-
if (HttpIsFeatureSupported(feature))
164-
{
165-
return true;
166-
}
163+
return HttpIsFeatureSupported(feature);
167164
}
168165
catch (EntryPointNotFoundException) { }
169166

src/Servers/HttpSys/src/NativeInterop/RequestQueue.cs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,18 @@ internal class RequestQueue
1919
private readonly ILogger _logger;
2020
private bool _disposed;
2121

22-
internal RequestQueue(UrlGroup urlGroup, string requestQueueName, string urlPrefix, ILogger logger, bool receiver)
23-
: this(urlGroup, requestQueueName, mode: default, logger, receiver)
22+
internal RequestQueue(string requestQueueName, string urlPrefix, ILogger logger, bool receiver)
23+
: this(urlGroup: null, requestQueueName, RequestQueueMode.Attach, logger, receiver)
2424
{
25-
UrlGroup = new UrlGroup(this, UrlPrefix.Create(urlPrefix));
25+
try
26+
{
27+
UrlGroup = new UrlGroup(this, UrlPrefix.Create(urlPrefix));
28+
}
29+
catch
30+
{
31+
Dispose();
32+
throw;
33+
}
2634
}
2735

2836
internal RequestQueue(UrlGroup urlGroup, string requestQueueName, RequestQueueMode mode, ILogger logger)
@@ -42,12 +50,10 @@ private RequestQueue(UrlGroup urlGroup, string requestQueueName, RequestQueueMod
4250
{
4351
flags = HttpApiTypes.HTTP_CREATE_REQUEST_QUEUE_FLAG.OpenExisting;
4452
Created = false;
45-
}
46-
47-
if (receiver)
48-
{
49-
flags = HttpApiTypes.HTTP_CREATE_REQUEST_QUEUE_FLAG.OpenExisting | HttpApiTypes.HTTP_CREATE_REQUEST_QUEUE_FLAG.Delegation;
50-
Created = false;
53+
if (receiver)
54+
{
55+
flags |= HttpApiTypes.HTTP_CREATE_REQUEST_QUEUE_FLAG.Delegation;
56+
}
5157
}
5258

5359
var statusCode = HttpApi.HttpCreateRequestQueue(

src/Servers/HttpSys/src/RequestProcessing/Request.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ public X509Certificate2 ClientCertificate
347347
}
348348
}
349349

350-
public bool IsTransferable => (HasRequestBodyStarted || RequestContext.Response.HasStarted);
350+
public bool IsTransferable => !(HasRequestBodyStarted || RequestContext.Response.HasStarted);
351351

352352
// Populates the client certificate. The result may be null if there is no client cert.
353353
// TODO: Does it make sense for this to be invoked multiple times (e.g. renegotiate)? Client and server code appear to

src/Servers/HttpSys/src/RequestProcessing/RequestContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ internal unsafe void Transfer(DelegationRule destination)
352352
destination.Queue.Handle,
353353
Request.RequestId,
354354
destination.Queue.UrlGroup.Id,
355-
1,
355+
propertyInfoSetSize: 1,
356356
&property);
357357
}
358358

src/Servers/HttpSys/src/ServerDelegationPropertyFeature.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public ServerDelegationPropertyFeature(RequestQueue queue, ILogger logger)
2121

2222
public DelegationRule CreateDelegationRule(string queueName, string uri)
2323
{
24-
var wrapper = new DelegationRule(queueName, uri, _logger);
25-
_queue.UrlGroup.SetDelegationProperty(wrapper.Queue);
26-
return wrapper;
24+
var rule = new DelegationRule(queueName, uri, _logger);
25+
_queue.UrlGroup.SetDelegationProperty(rule.Queue);
26+
return rule;
2727
}
2828
}
2929
}

src/Servers/HttpSys/test/FunctionalTests/DelegateTests.cs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public async Task DelegateAfterWriteToResponseBodyShouldThrowTest()
6666
{
6767
await httpContext.Response.WriteAsync(_expectedResponseString);
6868
var transferFeature = httpContext.Features.Get<IHttpSysRequestTransferFeature>();
69+
Assert.False(transferFeature.IsTransferable);
6970
Assert.Throws<InvalidOperationException>(() => transferFeature.TransferRequest(wrapper));
7071
});
7172

@@ -97,6 +98,7 @@ public async Task WriteToBodyAfterDelegateShouldThrowTest()
9798
{
9899
var transferFeature = httpContext.Features.Get<IHttpSysRequestTransferFeature>();
99100
transferFeature.TransferRequest(wrapper);
101+
Assert.False(transferFeature.IsTransferable);
100102
await Assert.ThrowsAsync<InvalidOperationException>(async () =>
101103
{
102104
await httpContext.Response.WriteAsync(_expectedResponseString);
@@ -146,21 +148,11 @@ public async Task DelegateAfterRequestBodyReadShouldThrow()
146148
[DelegateSupportedCondition(false)]
147149
public async Task DelegationFeaturesAreNull()
148150
{
149-
var queueName = Guid.NewGuid().ToString();
150-
using var receiver = Utilities.CreateHttpServer(out var receiverAddress, async httpContext =>
151-
{
152-
await httpContext.Response.WriteAsync(_expectedResponseString);
153-
},
154-
options =>
155-
{
156-
options.RequestQueueName = queueName;
157-
});
158-
159-
using var delegator = Utilities.CreateHttpServer(out var delegatorAddress, async httpContext =>
151+
using var delegator = Utilities.CreateHttpServer(out var delegatorAddress, httpContext =>
160152
{
161153
var transferFeature = httpContext.Features.Get<IHttpSysRequestTransferFeature>();
162154
Assert.Null(transferFeature);
163-
await httpContext.Response.WriteAsync(_expectedResponseString);
155+
return Task.CompletedTask;
164156
});
165157

166158
var delegationProperty = delegator.Features.Get<IServerDelegationFeature>();

src/Shared/HttpSys/NativeInterop/HttpApiTypes.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ internal enum HTTP_SERVER_PROPERTY
3232
HttpServerListenEndpointProperty,
3333
HttpServerChannelBindProperty,
3434
HttpServerProtectionLevelProperty,
35-
// Internal
3635
HttpServerDelegationProperty = 16
3736
}
3837

0 commit comments

Comments
 (0)