Skip to content

Commit c218c56

Browse files
committed
manual ci start
1 parent a130dca commit c218c56

3 files changed

Lines changed: 75 additions & 6 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
name: CI
22

33
on:
4-
pull_request:
5-
branches:
6-
- main
4+
workflow_dispatch:
75

86
jobs:
97
build:
10-
runs-on: ubuntu-22.04
8+
runs-on: ubuntu-latest
119
services:
1210
# Docker without TLS (plain TCP) !DEPRECATED! with next docker release
1311
docker-no-tls:

src/Docker.DotNet/Microsoft.Net.Http.Client/ManagedHandler.cs

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace Microsoft.Net.Http.Client;
22

33
using System;
4+
using System.IO;
45

56
public class ManagedHandler : HttpMessageHandler
67
{
@@ -172,7 +173,7 @@ private async Task<HttpResponseMessage> ProcessRequestAsync(HttpRequestMessage r
172173

173174
if (request.IsHttps())
174175
{
175-
SslStream sslStream = new SslStream(transport, false, ServerCertificateValidationCallback);
176+
SslStream sslStream = new SslStream(new BlockZeroByteReadsStream(transport), false, ServerCertificateValidationCallback);
176177
await sslStream.AuthenticateAsClientAsync(request.GetHostProperty(), ClientCertificates, SslProtocols.Tls12, false);
177178
transport = sslStream;
178179
}
@@ -384,4 +385,72 @@ private async Task TunnelThroughProxyAsync(HttpRequestMessage request, Stream tr
384385
throw new HttpRequestException("Failed to negotiate the proxy tunnel: " + connectResponse);
385386
}
386387
}
388+
389+
internal sealed class BlockZeroByteReadsStream : Stream
390+
{
391+
public override bool CanRead
392+
{
393+
get { return innerStream.CanRead; }
394+
}
395+
396+
public override bool CanSeek
397+
{
398+
get { return innerStream.CanSeek; }
399+
}
400+
401+
public override bool CanWrite
402+
{
403+
get { return innerStream.CanWrite; }
404+
}
405+
406+
public override long Length
407+
{
408+
get { return innerStream.Length; }
409+
}
410+
411+
public override long Position
412+
{
413+
get { return innerStream.Position; }
414+
set { innerStream.Position = value; }
415+
}
416+
417+
private Stream innerStream;
418+
419+
public BlockZeroByteReadsStream(Stream stream)
420+
{
421+
innerStream = stream;
422+
}
423+
424+
public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
425+
{
426+
if (count == 0) return Task.FromResult(0);
427+
return innerStream.ReadAsync(buffer, offset, count, cancellationToken);
428+
}
429+
430+
public override int Read(byte[] buffer, int offset, int count)
431+
{
432+
if (count == 0) return 0;
433+
return innerStream.Read(buffer, offset, count);
434+
}
435+
436+
public override void Flush()
437+
{
438+
innerStream.Flush();
439+
}
440+
441+
public override long Seek(long offset, SeekOrigin origin)
442+
{
443+
return innerStream.Seek(offset, origin);
444+
}
445+
446+
public override void SetLength(long value)
447+
{
448+
innerStream.SetLength(value);
449+
}
450+
451+
public override void Write(byte[] buffer, int offset, int count)
452+
{
453+
innerStream.Write(buffer, offset, count);
454+
}
455+
}
387456
}

test/Docker.DotNet.Tests/TestFixture.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.IO;
2+
using System.Net;
23
using System.Net.Security;
34
using System.Security.Cryptography.X509Certificates;
45
using Docker.DotNet.X509;
@@ -221,7 +222,8 @@ public static IEnumerable<object[]> GetDockerClientTypes()
221222
.Select(t => new object[] { t });
222223
}
223224

224-
return allClients.Select(t => new object[] { t });
225+
//return allClients.Select(t => new object[] { t });
226+
return allClients.Where(t => t == TestClientsEnum.ManagedHttps).Select(t => new object[] { t });
225227
}
226228

227229
public static IEnumerable<TestDaemonsEnum> GetDockerDaemonTypes()

0 commit comments

Comments
 (0)