diff --git a/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpChunkedStreamReader.cs b/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpChunkedStreamReader.cs index e0077b57e8b..c202e6ece40 100644 --- a/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpChunkedStreamReader.cs +++ b/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpChunkedStreamReader.cs @@ -122,5 +122,10 @@ public override int Read(byte[] buffer, int offset, int count) public override void SetLength(long value) => throw new NotImplementedException(); public override void Write(byte[] buffer, int offset, int count) => throw new NotImplementedException(); + + protected override void Dispose(bool disposing) + { + this.stream.Dispose(); + } } } diff --git a/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpUdsMessageHandler.cs b/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpUdsMessageHandler.cs index 3e5dc6e21e5..074fb47fc93 100644 --- a/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpUdsMessageHandler.cs +++ b/edge-util/src/Microsoft.Azure.Devices.Edge.Util/uds/HttpUdsMessageHandler.cs @@ -20,34 +20,31 @@ public HttpUdsMessageHandler(Uri providerUri) protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { - Socket socket = await this.GetConnectedSocketAsync(); - var stream = new HttpBufferedStream(new NetworkStream(socket, true)); - - var serializer = new HttpRequestResponseSerializer(); - byte[] requestBytes = serializer.SerializeRequest(request); - - Events.SendRequest(request.RequestUri); - await stream.WriteAsync(requestBytes, 0, requestBytes.Length, cancellationToken); - if (request.Content != null) + var endpoint = new UnixDomainSocketEndPoint(this.providerUri.LocalPath); + using (Socket socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.Unspecified)) { - await request.Content.CopyToAsync(stream); - } + Events.Connecting(this.providerUri.LocalPath); + await socket.ConnectAsync(endpoint); + Events.Connected(this.providerUri.LocalPath); - HttpResponseMessage response = await serializer.DeserializeResponse(stream, cancellationToken); - Events.ResponseReceived(response.StatusCode); + using (var stream = new HttpBufferedStream(new NetworkStream(socket, true))) + { + var serializer = new HttpRequestResponseSerializer(); + byte[] requestBytes = serializer.SerializeRequest(request); - return response; - } + Events.SendRequest(request.RequestUri); + await stream.WriteAsync(requestBytes, 0, requestBytes.Length, cancellationToken); + if (request.Content != null) + { + await request.Content.CopyToAsync(stream); + } - async Task GetConnectedSocketAsync() - { - var endpoint = new UnixDomainSocketEndPoint(this.providerUri.LocalPath); - var socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.Unspecified); - Events.Connecting(this.providerUri.LocalPath); - await socket.ConnectAsync(endpoint); - Events.Connected(this.providerUri.LocalPath); + HttpResponseMessage response = await serializer.DeserializeResponse(stream, cancellationToken); + Events.ResponseReceived(response.StatusCode); - return socket; + return response; + } + } } static class Events