Skip to content

Commit 785b0b8

Browse files
authored
For COPY operations treat 0 as infinite timeout in addition to -1 (#6352)
Fixes #6351
1 parent 3cbf66a commit 785b0b8

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

src/Npgsql/NpgsqlBinaryExporter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Npgsql.Internal;
88
using Npgsql.Internal.Postgres;
99
using NpgsqlTypes;
10+
using InfiniteTimeout = System.Threading.Timeout;
1011
using static Npgsql.Util.Statics;
1112

1213
namespace Npgsql;
@@ -46,7 +47,7 @@ public sealed class NpgsqlBinaryExporter : ICancelable
4647
/// </summary>
4748
public TimeSpan Timeout
4849
{
49-
set => _buf.Timeout = value;
50+
set => _buf.Timeout = value > TimeSpan.Zero ? value : InfiniteTimeout.InfiniteTimeSpan;
5051
}
5152

5253
Activity? _activity;

src/Npgsql/NpgsqlBinaryImporter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Npgsql.Internal;
99
using Npgsql.Internal.Postgres;
1010
using NpgsqlTypes;
11+
using InfiniteTimeout = System.Threading.Timeout;
1112
using static Npgsql.Util.Statics;
1213

1314
namespace Npgsql;
@@ -55,8 +56,9 @@ public TimeSpan Timeout
5556
{
5657
set
5758
{
58-
_buf.Timeout = value;
59-
_connector.ReadBuffer.Timeout = value;
59+
var timeout = value > TimeSpan.Zero ? value : InfiniteTimeout.InfiniteTimeSpan;
60+
_buf.Timeout = timeout;
61+
_connector.ReadBuffer.Timeout = timeout;
6062
}
6163
}
6264

src/Npgsql/NpgsqlRawCopyStream.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.Extensions.Logging;
77
using Npgsql.BackendMessages;
88
using Npgsql.Internal;
9+
using InfiniteTimeout = System.Threading.Timeout;
910
using static Npgsql.Util.Statics;
1011

1112
#pragma warning disable 1591
@@ -42,12 +43,12 @@ public sealed class NpgsqlRawCopyStream : Stream, ICancelable
4243
public override int WriteTimeout
4344
{
4445
get => (int) _writeBuf.Timeout.TotalMilliseconds;
45-
set => _writeBuf.Timeout = TimeSpan.FromMilliseconds(value);
46+
set => _writeBuf.Timeout = value > 0 ? TimeSpan.FromMilliseconds(value) : InfiniteTimeout.InfiniteTimeSpan;
4647
}
4748
public override int ReadTimeout
4849
{
4950
get => (int) _readBuf.Timeout.TotalMilliseconds;
50-
set => _readBuf.Timeout = TimeSpan.FromMilliseconds(value);
51+
set => _readBuf.Timeout = value > 0 ? TimeSpan.FromMilliseconds(value) : InfiniteTimeout.InfiniteTimeSpan;
5152
}
5253

5354
/// <summary>

0 commit comments

Comments
 (0)