From 99589b2cc918fe05e20ebca3a2b96cc6bfc128a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?And=C5=BEej=20Korovacki?= Date: Mon, 1 Apr 2024 19:34:12 +0300 Subject: [PATCH 1/5] Change all localized DateTime logic with Universal alternative --- .../System.Net.Primitives/src/System/Net/Cookie.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.Net.Primitives/src/System/Net/Cookie.cs b/src/libraries/System.Net.Primitives/src/System/Net/Cookie.cs index 8e21138d1b58f..b25a5df1db2d1 100644 --- a/src/libraries/System.Net.Primitives/src/System/Net/Cookie.cs +++ b/src/libraries/System.Net.Primitives/src/System/Net/Cookie.cs @@ -63,7 +63,7 @@ public sealed class Cookie private bool m_secure; // Do not rename (binary serialization) [System.Runtime.Serialization.OptionalField] private bool m_httpOnly = false; // Do not rename (binary serialization) - private DateTime m_timeStamp = DateTime.Now; // Do not rename (binary serialization) + private DateTime m_timeStamp = DateTime.UtcNow; // Do not rename (binary serialization) private string m_value = string.Empty; // Do not rename (binary serialization) private int m_version; // Do not rename (binary serialization) @@ -199,13 +199,13 @@ public bool Expired { get { - return (m_expires != DateTime.MinValue) && (m_expires.ToLocalTime() <= DateTime.Now); + return (m_expires != DateTime.MinValue) && (m_expires.ToUniversalTime() <= DateTime.UtcNow); } set { if (value) { - m_expires = DateTime.Now; + m_expires = DateTime.UtcNow; } } } @@ -801,7 +801,7 @@ internal void ToString(StringBuilder sb) } if (Expires != DateTime.MinValue) { - int seconds = (int)(Expires.ToLocalTime() - DateTime.Now).TotalSeconds; + int seconds = (int)(Expires.ToUniversalTime() - DateTime.UtcNow).TotalSeconds; if (seconds < 0) { // This means that the cookie has already expired. Set Max-Age to 0 From 7c28dfc12a61ef392dfbdf12d4386a579dd496c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?And=C5=BEej=20Korovacki?= Date: Mon, 1 Apr 2024 19:56:54 +0300 Subject: [PATCH 2/5] tests adjusted --- .../tests/FunctionalTests/CookieTest.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs b/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs index 1ba710d4f46e8..2da9a96af33fb 100644 --- a/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs +++ b/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs @@ -116,10 +116,10 @@ public static void Expired_GetSet_Success() Cookie c = new Cookie(); Assert.False(c.Expired); - c.Expires = DateTime.Now.AddDays(-1); + c.Expires = DateTime.UtcNow.AddDays(-1); Assert.True(c.Expired); - c.Expires = DateTime.Now.AddDays(1); + c.Expires = DateTime.UtcNow.AddDays(1); Assert.False(c.Expired); c.Expired = true; @@ -135,7 +135,7 @@ public static void Expires_GetSet_Success() Cookie c = new Cookie(); Assert.Equal(c.Expires, DateTime.MinValue); - DateTime dt = DateTime.Now; + DateTime dt = DateTime.UtcNow; c.Expires = dt; Assert.Equal(dt, c.Expires); } @@ -226,7 +226,7 @@ public static void Secure_GetSet_Success() [Fact] public static void Timestamp_GetSet_Success() { - DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0); //DateTime.Now changes as the test runs + DateTime dt = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0); //DateTime.Now changes as the test runs Cookie c = new Cookie(); Assert.True(c.TimeStamp >= dt); } From e95abb3cef14633e0139551a8485d2a716a7f422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?And=C5=BEej=20Korovacki?= Date: Tue, 2 Apr 2024 10:34:27 +0300 Subject: [PATCH 3/5] comment updated according to changes --- .../System.Net.Primitives/tests/FunctionalTests/CookieTest.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs b/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs index 2da9a96af33fb..8cb229560be37 100644 --- a/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs +++ b/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs @@ -226,7 +226,8 @@ public static void Secure_GetSet_Success() [Fact] public static void Timestamp_GetSet_Success() { - DateTime dt = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0); //DateTime.Now changes as the test runs + //DateTime.UtcNow changes as the test runs + DateTime dt = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0); Cookie c = new Cookie(); Assert.True(c.TimeStamp >= dt); } From 9834bb174d9599d012c6466cabd8989c15295fd0 Mon Sep 17 00:00:00 2001 From: Andzej Korovacki Date: Wed, 10 Apr 2024 14:55:57 +0300 Subject: [PATCH 4/5] Update src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs Co-authored-by: Radek Zikmund <32671551+rzikm@users.noreply.github.com> --- .../System.Net.Primitives/tests/FunctionalTests/CookieTest.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs b/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs index 8cb229560be37..11fa3ba37026e 100644 --- a/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs +++ b/src/libraries/System.Net.Primitives/tests/FunctionalTests/CookieTest.cs @@ -227,7 +227,8 @@ public static void Secure_GetSet_Success() public static void Timestamp_GetSet_Success() { //DateTime.UtcNow changes as the test runs - DateTime dt = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0); + DateTime dt = DateTime.UtcNow; + dt = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0); Cookie c = new Cookie(); Assert.True(c.TimeStamp >= dt); } From dcc2402e53248310fb439334ea9cb402acc161fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?And=C5=BEej=20Korovacki?= Date: Wed, 10 Apr 2024 16:01:18 +0300 Subject: [PATCH 5/5] Code review comment fix --- src/libraries/Common/src/System/Net/CookieParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/src/System/Net/CookieParser.cs b/src/libraries/Common/src/System/Net/CookieParser.cs index bd6b262b5b4f5..9148b479a1f11 100644 --- a/src/libraries/Common/src/System/Net/CookieParser.cs +++ b/src/libraries/Common/src/System/Net/CookieParser.cs @@ -665,7 +665,7 @@ private static FieldInfo IsQuotedVersionField expiresSet = true; if (int.TryParse(CheckQuoted(_tokenizer.Value), out int parsed)) { - cookie!.Expires = DateTime.Now.AddSeconds(parsed); + cookie!.Expires = DateTime.UtcNow.AddSeconds(parsed); } else {