platform/upstream/dotnet/runtime.git
5 years agoUpdating timeout in `SslStream_SameCertUsedForClientAndServer_Ok` to match the rest...
Vladimir Sadov [Sun, 17 Feb 2019 00:10:44 +0000 (16:10 -0800)]
Updating timeout in `SslStream_SameCertUsedForClientAndServer_Ok` to match the rest of the tests in the area.
All other passing tests standardise on `TestConfiguration.PassingTestTimeoutMilliseconds`

There seems to be no reasons for SslStream_SameCertUsedForClientAndServer_Ok` to use a hardcoded timeout.
Also the hardcoded timeout is significantly shorter and occasionally leads to failures on low-spec test VMs.

Commit migrated from https://github.com/dotnet/corefx/commit/8919cbdd960f41ba2f87c210d5f85d0d8a3c1276

5 years agoMerge pull request dotnet/corefx#35324 from stephentoub/http2allocs
Stephen Toub [Fri, 15 Feb 2019 23:13:47 +0000 (18:13 -0500)]
Merge pull request dotnet/corefx#35324 from stephentoub/http2allocs

Remove more Http2Connection/Stream allocations

Commit migrated from https://github.com/dotnet/corefx/commit/55f7269536eb9c072cabd8bbcdd7644cd18bd001

5 years agoUpdate BuildTools, ProjectNTfs, ProjectNTfsTestILC to preview1-03715-01, beta-27415...
dotnet-maestro-bot [Fri, 15 Feb 2019 20:40:25 +0000 (12:40 -0800)]
Update BuildTools, ProjectNTfs, ProjectNTfsTestILC to preview1-03715-01, beta-27415-00, beta-27415-00, respectively (dotnet/corefx#35353)

Commit migrated from https://github.com/dotnet/corefx/commit/f40cb8ea05d8b1f3d9acdcd8cf257c764ef56693

5 years agoAddress PR feedback and additional cleanup
Stephen Toub [Fri, 15 Feb 2019 16:40:17 +0000 (11:40 -0500)]
Address PR feedback and additional cleanup

Commit migrated from https://github.com/dotnet/corefx/commit/c0f24cf4136f22e508e1b9289062e541bad6af88

5 years agoRemove groovy and json files for unused pipelines (dotnet/corefx#35355)
Santiago Fernandez Madero [Fri, 15 Feb 2019 20:16:34 +0000 (14:16 -0600)]
Remove groovy and json files for unused pipelines (dotnet/corefx#35355)

Commit migrated from https://github.com/dotnet/corefx/commit/babb33b15afe35d5ce8dd06d9f2f6f16ea4b71be

5 years agoFix some XML comments in Base64Encoder/Decoder (dotnet/corefx#35354)
Stephen Toub [Fri, 15 Feb 2019 19:17:55 +0000 (14:17 -0500)]
Fix some XML comments in Base64Encoder/Decoder (dotnet/corefx#35354)

* Fix some XML comments in Base64Encoder/Decoder

* Update Base64Encoder.cs

Commit migrated from https://github.com/dotnet/corefx/commit/ec34e99b876ea1119f37986ead894f4eded1a19a

5 years agoRemove uap config from System.Net.Http UnitTests
Stephen Toub [Fri, 15 Feb 2019 02:43:21 +0000 (21:43 -0500)]
Remove uap config from System.Net.Http UnitTests

These tests are compiling in internal sources and running tests against them directly.  The only configuration we need is netcoreapp.

Commit migrated from https://github.com/dotnet/corefx/commit/f9d1057321c17d8692e829b311c925660e23f8db

5 years agoUse StaticTable for writing known headers
Stephen Toub [Fri, 15 Feb 2019 02:20:59 +0000 (21:20 -0500)]
Use StaticTable for writing known headers

Commit migrated from https://github.com/dotnet/corefx/commit/65a101d6968bac28f343ed2e352cf54f8e122f21

5 years agoImplement static table for writing some headers
Geoff Kizer [Thu, 14 Feb 2019 22:26:49 +0000 (17:26 -0500)]
Implement static table for writing some headers

Commit migrated from https://github.com/dotnet/corefx/commit/1b0b62a3a6fa0ea0fa301b0bac9b9c350ad6c14c

5 years agoDon't pool Http2Connection buffers
Stephen Toub [Thu, 14 Feb 2019 22:23:12 +0000 (17:23 -0500)]
Don't pool Http2Connection buffers

Http2Connection keeps these buffers for a really long time; we don't want it to starve the pool.  It also leads to lifetime issues, as the buffers need to be (but currently aren't) released back to the pool, yet work can end up accessing the ArrayBuffer after the connection is logically disposed.

Commit migrated from https://github.com/dotnet/corefx/commit/847f64fa812362e75dfcbd0bdcf41541921d607c

5 years agoAvoid per-request HeaderCallback delegate allocation
Stephen Toub [Thu, 14 Feb 2019 17:55:31 +0000 (12:55 -0500)]
Avoid per-request HeaderCallback delegate allocation

Commit migrated from https://github.com/dotnet/corefx/commit/14ef1be63af22bc610223eab337bdab99e6af4a8

5 years agoAvoid lock object allocation in CreditManager
Stephen Toub [Thu, 14 Feb 2019 18:04:03 +0000 (13:04 -0500)]
Avoid lock object allocation in CreditManager

Commit migrated from https://github.com/dotnet/corefx/commit/701102c5c0282b3d29edc76aca12d985af8ff70f

5 years agoAvoid syncobj object allocation in Http2Connection
Stephen Toub [Thu, 14 Feb 2019 02:55:46 +0000 (21:55 -0500)]
Avoid syncobj object allocation in Http2Connection

Just use one of the other readonly objects.

Commit migrated from https://github.com/dotnet/corefx/commit/d74108c671abffa3d314b011b7269806eedb7df7

5 years agoDisable jenkins legs as we transition to use azure devops. (dotnet/corefx#35326)
Santiago Fernandez Madero [Fri, 15 Feb 2019 17:37:04 +0000 (11:37 -0600)]
Disable jenkins legs as we transition to use azure devops. (dotnet/corefx#35326)

* Disable jenkins legs to transition to azure devops

* Don't run tests on uap PR leg

Commit migrated from https://github.com/dotnet/corefx/commit/af90ef6e49e766f8062eca740b4b3d03cf2745b5

5 years agoUse vfork() improve performance when starting processes. (dotnet/corefx#33289)
joshudson [Fri, 15 Feb 2019 16:50:46 +0000 (08:50 -0800)]
Use vfork() improve performance when starting processes. (dotnet/corefx#33289)

* Use vfork() to start child processes where this yields a performance improvement due to getting rid of page faults.

* Remove specific dependency on shared memory vfork so that cross compiles work again.

* Added signal mask code so that a child process can't confuse the parent; also took care of pthread cancellation mask in case third-party native code tries to use it

* Fix issues from vfork() pull request review

* Check handler before replacing it

* Improve readability of signal handler removing

* Convert tabs to spaces

* use NSIG instead of dynamic probing because glibc punches a hole in the middle of the signal list

* Exclude Mac OSX from vfork() because we don't quite trust it.

* Fix one last batch of typos

Commit migrated from https://github.com/dotnet/corefx/commit/0a561e3c71ec9b98f07b90d0c1f20f8956adafaa

5 years agoFix CoreFX build breaks
Jan Kotas [Fri, 15 Feb 2019 08:11:29 +0000 (00:11 -0800)]
Fix CoreFX build breaks

Commit migrated from https://github.com/dotnet/corefx/commit/f078da3a4ddcb99cbb26b59fb67f59fdfb200548

5 years agoAdd support for default interface methods in DispatchProxy (dotnet/corefx#34720)
Michal Strehovský [Fri, 15 Feb 2019 10:46:31 +0000 (11:46 +0100)]
Add support for default interface methods in DispatchProxy (dotnet/corefx#34720)

The generated dispatch proxy shouldn't try to override non-virtual or final methods.

This also fixes a pre-existing bug where we would try to override static method on interfaces (while C# can't emit them, the CLR has supported them for ages).

Fixes dotnet/coreclrdotnet/corefx#15646.

Commit migrated from https://github.com/dotnet/corefx/commit/89b67cc789c78ceb65bf996969aba6e30b0679d0

5 years agomacOS: Allow loading first X509 certificate from PEM sequence
Kevin Jones [Fri, 15 Feb 2019 01:36:23 +0000 (20:36 -0500)]
macOS: Allow loading first X509 certificate from PEM sequence

* macOS X509 PAL support for concatenated PEM.

* GetCertContentType should throw on macOS to be consistent with Unix and Windows.

Commit migrated from https://github.com/dotnet/corefx/commit/ef6e6693329981588384e98f463f814f5763c13d

5 years agoRegenerating the System.Runtime.Intrinsics ref assembly to pick up the API changes...
Tanner Gooding [Thu, 14 Feb 2019 19:45:43 +0000 (11:45 -0800)]
Regenerating the System.Runtime.Intrinsics ref assembly to pick up the API changes. (dotnet/corefx#35321)

Commit migrated from https://github.com/dotnet/corefx/commit/84bedcf58cfe951d37c5b3eba2957ddb2410f34d

5 years agoSystem.IO.Ports native package (dotnet/corefx#35126)
Krzysztof Wicher [Thu, 14 Feb 2019 18:19:46 +0000 (10:19 -0800)]
System.IO.Ports native package (dotnet/corefx#35126)

* System.IO.Ports native package

* add inputs and outputs

* fix build

* change the way native package is build

* fix pkgproj and props per feedback

* NativeFile -> File

* add workaround for the package test

* exclude runtime.native.Syystem.IO.Ports from package testing

* disable also System.IO.Ports

* Add BaselineVersion and InboxOn in packageIndex.json

Commit migrated from https://github.com/dotnet/corefx/commit/c776f656fd19cb371a05015dc452385a5222663b

5 years agoPublish build artifacts only in official builds (dotnet/corefx#35320)
Santiago Fernandez Madero [Thu, 14 Feb 2019 17:18:49 +0000 (11:18 -0600)]
Publish build artifacts only in official builds (dotnet/corefx#35320)

Commit migrated from https://github.com/dotnet/corefx/commit/52a759ec38af649a5d39e9b3e977cf2bb04be749

5 years agoUpdate ProjectNTfs, ProjectNTfsTestILC to beta-27414-00, beta-27414-00, respectively...
dotnet-maestro-bot [Thu, 14 Feb 2019 13:21:59 +0000 (05:21 -0800)]
Update ProjectNTfs, ProjectNTfsTestILC to beta-27414-00, beta-27414-00, respectively (dotnet/corefx#35311)

Commit migrated from https://github.com/dotnet/corefx/commit/e18f88caa7cc2be47ec00cbd2d3a2e3faa80a116

5 years agoAdd roundtrip tests for EncoderFallbackBufferHelper (dotnet/corefx#35008)
Layomi Akinrinade [Thu, 14 Feb 2019 02:45:35 +0000 (21:45 -0500)]
Add roundtrip tests for EncoderFallbackBufferHelper (dotnet/corefx#35008)

This increases branch test coverage for
System.Text.EncoderFallbackBufferHelper from 9% to 40.9%.

Commit migrated from https://github.com/dotnet/corefx/commit/ed0a57d42d859a4b8fee19441c504bc296c2a2ae

5 years agoUpdate BuildTools to preview1-03713-01 (dotnet/corefx#35295)
dotnet-maestro-bot [Thu, 14 Feb 2019 02:41:30 +0000 (18:41 -0800)]
Update BuildTools to preview1-03713-01 (dotnet/corefx#35295)

Commit migrated from https://github.com/dotnet/corefx/commit/f5717c1754f9ed3d845fdf5cc104492f7f5216f8

5 years agoFix SqlClient udtTest (dotnet/corefx#35304)
Afsaneh Rafighi [Wed, 13 Feb 2019 22:04:52 +0000 (14:04 -0800)]
Fix SqlClient udtTest  (dotnet/corefx#35304)

* Fix UdtTest2

* fix UdtBulkCopyTest

Commit migrated from https://github.com/dotnet/corefx/commit/8a8f95bda5a10c156ecb81e3b3590a77001c0f2c

5 years agoMerge pull request dotnet/corefx#34476 from Marusyk/rmarusyk/System-Runtime-Caching
Stephen Toub [Wed, 13 Feb 2019 20:17:50 +0000 (15:17 -0500)]
Merge pull request dotnet/corefx#34476 from Marusyk/rmarusyk/System-Runtime-Caching

System.Runtime.Caching. Refactor DllImports

Commit migrated from https://github.com/dotnet/corefx/commit/66f8d08489dbe4772654ccad410a2328bbbe70fc

5 years agoUpdate dependencies from dotnet/coreclr (dotnet/corefx#35291)
dotnet-maestro[bot] [Wed, 13 Feb 2019 20:07:33 +0000 (20:07 +0000)]
Update dependencies from dotnet/coreclr (dotnet/corefx#35291)

* Update dependencies from https://github.com/dotnet/coreclr build 20190212.74

This change updates the following dependencies
- Microsoft.NET.Sdk.IL - 3.0.0-preview4-27412-74
- Microsoft.NETCore.ILAsm - 3.0.0-preview4-27412-74
- Microsoft.NETCore.Runtime.CoreCLR - 3.0.0-preview4-27412-74

* Expose new rounding modes and fix failing test

* Stop checking for null exception argument in Font test

Commit migrated from https://github.com/dotnet/corefx/commit/a546587fbfb0137176353a4e5ab2de206e4975e9

5 years agoReenable Fedora27 queue (dotnet/corefx#35298)
Santiago Fernandez Madero [Wed, 13 Feb 2019 19:52:15 +0000 (13:52 -0600)]
Reenable Fedora27 queue (dotnet/corefx#35298)

Commit migrated from https://github.com/dotnet/corefx/commit/add4cacbfb7f7d3f5f07630d10b24e38da4ad027

5 years agoMerge pull request dotnet/corefx#34393 from Wraith2/sqlperf-metadata
Afsaneh Rafighi [Wed, 13 Feb 2019 19:42:26 +0000 (11:42 -0800)]
Merge pull request dotnet/corefx#34393 from Wraith2/sqlperf-metadata

SqlClient reduce metadata size

Commit migrated from https://github.com/dotnet/corefx/commit/f0f514117a40236129564e9756d8cf8fb0dc4f03

5 years agoMerge pull request dotnet/corefx#34711 from Wraith2/sqlfix-misc1
Afsaneh Rafighi [Wed, 13 Feb 2019 19:29:07 +0000 (11:29 -0800)]
Merge pull request dotnet/corefx#34711 from Wraith2/sqlfix-misc1

SqlClient minor cleanup to close old issues

Commit migrated from https://github.com/dotnet/corefx/commit/ee6cf5ab949c05cf85cdf44678fa7763cd59910c

5 years agoMerge pull request dotnet/corefx#34546 from Wraith2/sqltests-updates
Afsaneh Rafighi [Wed, 13 Feb 2019 19:25:36 +0000 (11:25 -0800)]
Merge pull request dotnet/corefx#34546 from Wraith2/sqltests-updates

SqlClient Manual Test fixes and documentation update

Commit migrated from https://github.com/dotnet/corefx/commit/f749fcae910fec7199f570ab5fb9f6c684c1b2ee

5 years agoFix race condition in DiagnosticSourceEventSource (dotnet/corefx#35269)
Stephen Toub [Wed, 13 Feb 2019 19:10:51 +0000 (14:10 -0500)]
Fix race condition in DiagnosticSourceEventSource (dotnet/corefx#35269)

* Use RemoteInvoke in DiagnosticSourceEventListener tests

Running these concurrently with other tests in the same process can result in spurious failures.

* Fix race condition in DiagnosticSourceEventSource

If multiple threads all try to write different objects at the same time, PropertySpec.Fetch can manifest a race condition that results in potentially trying to cast one call's object to another call's type.  The fix is to allow for atomically storing the cached data, and using a local to ensure that a calling thread's view is consistent.

Commit migrated from https://github.com/dotnet/corefx/commit/7c50828052ba55e3474ff5dd29ee7fcf5bbfa03d

5 years agoMerge pull request dotnet/corefx#35279 from wtgodbe/preview4
William Godbe [Wed, 13 Feb 2019 18:07:08 +0000 (10:07 -0800)]
Merge pull request dotnet/corefx#35279 from wtgodbe/preview4

Update branding for preview4

Commit migrated from https://github.com/dotnet/corefx/commit/5726c1ee1c70d06dd7dee318e868c8cd820e479b

5 years agoRemove optionaltooling buildtools dependency (dotnet/corefx#34946)
Viktor Hofer [Wed, 13 Feb 2019 17:44:07 +0000 (18:44 +0100)]
Remove optionaltooling buildtools dependency (dotnet/corefx#34946)

* Remove optionaltooling buildtools dependency

* Disable uapaot Jenkins leg

Commit migrated from https://github.com/dotnet/corefx/commit/9fa041a04df9a38ab4167e76fbee6133eb627f71

5 years agoSimplify Dbg to minimal tracing
Stephen Toub [Wed, 13 Feb 2019 16:23:59 +0000 (11:23 -0500)]
Simplify Dbg to minimal tracing

Commit migrated from https://github.com/dotnet/corefx/commit/84a67e49ca345d5d1ed10ce9b77c1c6093e75661

5 years agoSystem.Runtime.Caching. Refactor DllImports
Roma Marusyk [Wed, 9 Jan 2019 18:59:10 +0000 (20:59 +0200)]
System.Runtime.Caching. Refactor DllImports

Commit migrated from https://github.com/dotnet/corefx/commit/efe793dcfa40fbf64fffab55d2c584e408677f6c

5 years agoUpdate ProjectNTfs, ProjectNTfsTestILC to beta-27413-00, beta-27413-00, respectively...
dotnet-maestro-bot [Wed, 13 Feb 2019 16:13:26 +0000 (08:13 -0800)]
Update ProjectNTfs, ProjectNTfsTestILC to beta-27413-00, beta-27413-00, respectively (master) (dotnet/corefx#35286)

* Update ProjectNTfs, ProjectNTfsTestILC to beta-27413-00, beta-27413-00, respectively

* Remove EventCounter from System.Diagnostics.Tracing aot builds

Commit migrated from https://github.com/dotnet/corefx/commit/d93c3864553f78002c674051e9cfafcceed6b2b8

5 years agoIntroduce and use common calendar test base (dotnet/corefx#35150)
Hugh Bellamy [Wed, 13 Feb 2019 15:58:15 +0000 (15:58 +0000)]
Introduce and use common calendar test base (dotnet/corefx#35150)

* Introduce common test base for Calendars

* Consolidate more tests

* Fix netfx test run

* Fix TwoYearDigitMax tests

Commit migrated from https://github.com/dotnet/corefx/commit/8be17f83dfb6f9615b960d9fd048e1bb17c30533

5 years agoFix native build for x86 (dotnet/corefx#35289)
Santiago Fernandez Madero [Wed, 13 Feb 2019 14:06:44 +0000 (08:06 -0600)]
Fix native build for x86 (dotnet/corefx#35289)

Commit migrated from https://github.com/dotnet/corefx/commit/4a85c72d570e279b8b609c24bb7a10e40fe64f2f

5 years agoAdd a few more Parse_Subspan_Success inline datas (dotnet/corefx#35285)
Stephen Toub [Wed, 13 Feb 2019 12:08:23 +0000 (07:08 -0500)]
Add a few more Parse_Subspan_Success inline datas (dotnet/corefx#35285)

Addressing PR feedback that I missed.

Commit migrated from https://github.com/dotnet/corefx/commit/314c7a108debebc51a97f75b6c8a9eb53017e328

5 years agoFix official builds to publish to BAR using new sdk-task (dotnet/corefx#35287)
Santiago Fernandez Madero [Wed, 13 Feb 2019 07:45:27 +0000 (01:45 -0600)]
Fix official builds to publish to BAR using new sdk-task (dotnet/corefx#35287)

Commit migrated from https://github.com/dotnet/corefx/commit/f15d18e904534a1dcadfd86a17340950d1d06e21

5 years agoFix argument name in GCHandleTests (dotnet/corefx#35284)
Stephen Toub [Wed, 13 Feb 2019 04:47:23 +0000 (23:47 -0500)]
Fix argument name in GCHandleTests (dotnet/corefx#35284)

A GCHandle test is validating that an argument exception contains a null parameter name.  That's been fixed in coreclr, so this test will start to fail when we ingest a new coreclr.  For now, just removing the null validation, as it's not useful.

Commit migrated from https://github.com/dotnet/corefx/commit/b36cbda1a26ab4aa28fad9fb9a08c613bde4f609

5 years agoCleanup AssociatedMetadataTypeTypeDescriptor (dotnet/corefx#35077)
Hugh Bellamy [Wed, 13 Feb 2019 03:44:06 +0000 (03:44 +0000)]
Cleanup AssociatedMetadataTypeTypeDescriptor (dotnet/corefx#35077)

Commit migrated from https://github.com/dotnet/corefx/commit/b745257c15ba1ec8bdfd761aa0f38ecbc14d3fd8

5 years agoAdd simple http Windows auth tests using loopback server (dotnet/corefx#35280)
David Shulman [Wed, 13 Feb 2019 02:12:03 +0000 (18:12 -0800)]
Add simple http Windows auth tests using loopback server (dotnet/corefx#35280)

I added this test to help get familiar with the new GenericLoopbackServer
test pattern as well as use the new SkipTestException() ability.

The test is not an end-to-end test. It simply validates that the client is able
to begin the multi-leg Windows auth handshake and send the initial Authorization
header.

In addition, once https://github.com/dotnet/core-eng/issues/5135 is completed,
the 'IsNtlmInstalled' condition will always be true for the CI machines. Thus,
we will get better test coverage for Windows auth scenarios.

Contributes to dotnet/corefx#34878

Commit migrated from https://github.com/dotnet/corefx/commit/48bcedf786f264aa15adcb55b161ecc0cb2b2172

5 years agoAdd AssemblyLoadContext.GetLoadContext(SPC) test
Steve MacLean [Mon, 4 Feb 2019 19:47:25 +0000 (14:47 -0500)]
Add AssemblyLoadContext.GetLoadContext(SPC) test

Commit migrated from https://github.com/dotnet/corefx/commit/197d2a82ea38a5ea707a876fb055eabb3348e2a6

5 years agoMerge pull request dotnet/corefx#34345 from geoffkizer/genericloopbackserver
Geoff Kizer [Tue, 12 Feb 2019 20:54:50 +0000 (12:54 -0800)]
Merge pull request dotnet/corefx#34345 from geoffkizer/genericloopbackserver

Add GenericLoopbackServer for HttpClient testing

Commit migrated from https://github.com/dotnet/corefx/commit/3de6ad8c1233ccf9c781d42a0cdb88b0aeb24cb7

5 years agoenable SendAsync_RequestVersion20_ResponseVersion20IfHttp2Supported on Unix (dotnet...
Tomas Weinfurt [Tue, 12 Feb 2019 19:45:13 +0000 (11:45 -0800)]
enable SendAsync_RequestVersion20_ResponseVersion20IfHttp2Supported on Unix (dotnet/corefx#35201)

* enable SendAsync_RequestVersion20_ResponseVersion20IfHttp2Supported on Unix

* use IsWinHttpHandler to skip platform test on older windows

* reorder using statement

Commit migrated from https://github.com/dotnet/corefx/commit/caba0ef9ea05f66aaae814e89848acc98c23f327

5 years agoBufferSegment Handle Memory Set/Reset better (dotnet/corefx#35256)
Ben Adams [Tue, 12 Feb 2019 17:54:39 +0000 (17:54 +0000)]
BufferSegment Handle Memory Set/Reset better (dotnet/corefx#35256)

Commit migrated from https://github.com/dotnet/corefx/commit/838291cf1444e3a383dc296ab9190a3c0b642523

5 years agoAdd a shared framework and host for global tools in helix submissions (dotnet/corefx...
Viktor Hofer [Tue, 12 Feb 2019 16:04:29 +0000 (17:04 +0100)]
Add a shared framework and host for global tools in helix submissions (dotnet/corefx#35208)

* Add a shared framework and host for global tools

Adding the shared framework and host from the .dotnet directory to the
helix submission to provide a runtime for global tools.

* Darc update from build '20190212.3'

Commit migrated from https://github.com/dotnet/corefx/commit/6315ab5343fd4a15f2a8fedef2506f60ff5328d5

5 years agofix netfx build
Geoff Kizer [Tue, 12 Feb 2019 12:00:04 +0000 (04:00 -0800)]
fix netfx build

Commit migrated from https://github.com/dotnet/corefx/commit/0919bf7fde56a88f8cb2598d3b3709e6a75d279d

5 years agoAdd tests for ResourceManager on custom Assembly type. (dotnet/corefx#34617)
Filip Navara [Tue, 12 Feb 2019 08:52:56 +0000 (09:52 +0100)]
Add tests for ResourceManager on custom Assembly type. (dotnet/corefx#34617)

Commit migrated from https://github.com/dotnet/corefx/commit/24450dad74b0df3fc81026d7726b8441c41ae429

5 years agofix: pointed ProjectUrl to the Github repository instead of the .net homepage (dotnet...
Matthijs Breemans [Tue, 12 Feb 2019 08:47:40 +0000 (09:47 +0100)]
fix: pointed ProjectUrl to the Github repository instead of the .net homepage (dotnet/corefx#35154)

Commit migrated from https://github.com/dotnet/corefx/commit/ca6d54bea4b8c98c030e138adf41c652856d5f9f

5 years agoFix NullReferenceException in AssociationAttribute (dotnet/corefx#35078)
Hugh Bellamy [Tue, 12 Feb 2019 08:46:36 +0000 (08:46 +0000)]
Fix NullReferenceException in AssociationAttribute (dotnet/corefx#35078)

Commit migrated from https://github.com/dotnet/corefx/commit/584b2af6b5c20b2c0429e1ccd18e345f87d66e15

5 years agoAdd ObjectModel tests (dotnet/corefx#35013)
Hugh Bellamy [Tue, 12 Feb 2019 08:44:28 +0000 (08:44 +0000)]
Add ObjectModel tests (dotnet/corefx#35013)

Commit migrated from https://github.com/dotnet/corefx/commit/596c31093b61a19c0a5d8dbda8b2954442b2bf6b

5 years agoUpdate ProjectNTfs, ProjectNTfsTestILC to beta-27412-00, beta-27412-00, respectively...
dotnet-maestro-bot [Tue, 12 Feb 2019 07:38:55 +0000 (23:38 -0800)]
Update ProjectNTfs, ProjectNTfsTestILC to beta-27412-00, beta-27412-00, respectively (dotnet/corefx#35255)

Commit migrated from https://github.com/dotnet/corefx/commit/e902847cda101afbc6fc5397b03f3d4dcaec20e3

5 years agoMerge pull request dotnet/corefx#35227 from dotnet/fix-eventsource-test
Sung Yoon Whang [Tue, 12 Feb 2019 06:05:40 +0000 (22:05 -0800)]
Merge pull request dotnet/corefx#35227 from dotnet/fix-eventsource-test

System.Runtime added to known test list in BasicEventSourceTest

Commit migrated from https://github.com/dotnet/corefx/commit/e8e469653ca46e0499c925dfaaea796fc6f61cb0

5 years agoPublish build logs as artifacts and produce a binlog to publish to helix (dotnet...
Santiago Fernandez Madero [Tue, 12 Feb 2019 03:55:42 +0000 (21:55 -0600)]
Publish build logs as artifacts and produce a binlog to publish to helix (dotnet/corefx#35235)

* Publish build logs as artifacts and produce a binlog to publish to helix

* Flow Configuration property to arcade for logs to be binplaced correctly

Commit migrated from https://github.com/dotnet/corefx/commit/0d5348f8836debced9d7f93a780e07016cf2e83c

5 years agoSupport building corefx in VS2019 (dotnet/corefx#35197)
Santiago Fernandez Madero [Tue, 12 Feb 2019 03:53:20 +0000 (21:53 -0600)]
Support building corefx in VS2019 (dotnet/corefx#35197)

* Support building corefx in VS2019

* PR Feedback and update docs for VS2019

Commit migrated from https://github.com/dotnet/corefx/commit/fd736ea93d3b2b4bfa0288afdde34ebd9c9a680a

5 years agoRemove Jenkins uap and all configurations legs (dotnet/corefx#35249)
Santiago Fernandez Madero [Tue, 12 Feb 2019 03:52:40 +0000 (21:52 -0600)]
Remove Jenkins uap and all configurations legs (dotnet/corefx#35249)

Commit migrated from https://github.com/dotnet/corefx/commit/23ec14f59138c41754238183d6fe216d7210bee2

5 years agoMake sure SequencePosition is saved as part of JsonReaderState (dotnet/corefx#35245)
Ahson Khan [Tue, 12 Feb 2019 02:37:51 +0000 (18:37 -0800)]
Make sure SequencePosition is saved as part of JsonReaderState (dotnet/corefx#35245)

Commit migrated from https://github.com/dotnet/corefx/commit/53486e44427e096a4d7f672a0667980e8b65de63

5 years agoFix HttpClient EKU tests (dotnet/corefx#35240)
David Shulman [Tue, 12 Feb 2019 01:27:04 +0000 (17:27 -0800)]
Fix HttpClient EKU tests (dotnet/corefx#35240)

A set of HttpClient tests related to ClientCertificates were always failing on my machine:

System.Net.Http.Functional.Tests.SocketsHttpHandler_HttpClientHandler_ClientCertificates_Test
* method="Manual_SendClientCertificateWithClientAuthEKUToRemoteServer_OK"
* method="Manual_SendClientCertificateWithNoEKUToRemoteServer_OK"
* method="Manual_SendClientCertificateWithServerAuthEKUToRemoteServer_Forbidden"

These tests would generate an exception:
>System.Net.Http.HttpRequestException: An error occurred while sending the request. --->
 System.IO.IOException: The remote party requested renegotiation when AllowRenegotiation was set to false.

Similar to the tests failing and fixed in PR dotnet/corefx#35225, the CI machines don't have the test
root certificate installed. So, the tests weren't running in CI and the failures weren't noticed.

The root cause of the test failures is due to using SocketsHttpHandler. It is always setting
`SslStream.AllowRenegotiation` to false when first attempting to connect via HTTP/2. This is fine
if the connection is truely HTTP/2 since HTTP/2 doesn't support TLS renegotiation. However, if the
remote endpoint doesn't support HTTP/2 and thus connects with HTTP/1.1, then the SslStream should
not have AllowRenegotiation set to false. Client certificate scenarios frequently have the server
ask for the client certificate later in the connection process. So, TLS renegotiation is used. Opened
new issue dotnet/corefx#35239 to fix this in SocketsHttpHandler (or SslStream).

As part of fixing these tests, I refactored them into a single Theory test. But I had to workaround
complications due to using RemoteInvoke. I added a new RemoteInvoke overload to handling passing
an additional parameter.

Commit migrated from https://github.com/dotnet/corefx/commit/0c2ccd172157e0ebf1957e1bbcd5f07786ad6e3d

5 years agoFix ServerAsyncAuthenticateTest. (dotnet/corefx#35170)
Martin Baulig [Tue, 12 Feb 2019 01:21:54 +0000 (20:21 -0500)]
Fix ServerAsyncAuthenticateTest. (dotnet/corefx#35170)

In ServerAsyncSslHelper, pass a certificate validation callback to both
client and server.

Commit migrated from https://github.com/dotnet/corefx/commit/a46d64a21591dd36292b0f6f0946fc55babced11

5 years agoMake DEBUG builds always print chain errors (dotnet/corefx#35243)
Jeremy Barton [Tue, 12 Feb 2019 01:07:05 +0000 (17:07 -0800)]
Make DEBUG builds always print chain errors (dotnet/corefx#35243)

Commit migrated from https://github.com/dotnet/corefx/commit/24d614dd0b79e470163f0a392ee227a097199b35

5 years agoIgnore CTRequired when building an X509 chain. (dotnet/corefx#35246)
Kevin Jones [Tue, 12 Feb 2019 00:41:07 +0000 (19:41 -0500)]
Ignore CTRequired when building an X509 chain. (dotnet/corefx#35246)

Commit migrated from https://github.com/dotnet/corefx/commit/e8a88e8e0270977edc74019a282c73eab940b872

5 years agoReenable Ubuntu testing (dotnet/corefx#35248)
Santiago Fernandez Madero [Tue, 12 Feb 2019 00:31:12 +0000 (18:31 -0600)]
Reenable Ubuntu testing (dotnet/corefx#35248)

Commit migrated from https://github.com/dotnet/corefx/commit/3ae95c99ffe82aaf087c64857ee6982a6c9e1ba6

5 years agoThread principal unauthenticated (dotnet/corefx#35112)
Viktor Hofer [Mon, 11 Feb 2019 23:14:08 +0000 (00:14 +0100)]
Thread principal unauthenticated (dotnet/corefx#35112)

* Remove bind error for thread principal

* Disable threadpool test for uapaot

* Disable MailMessage reflection test on uapaot

* Disable ValueTask reflection tests on uapaot

* Guard System.TestEnvironment against ILC

* Revert AppDomain UnauthenticatedPrincipal change

Commit migrated from https://github.com/dotnet/corefx/commit/0424e9db4628029b3308380f26312c79912bfb42

5 years agoFix DispatchProxy arguments with [Out] methods (dotnet/corefx#34583)
Kevin Gosse [Mon, 11 Feb 2019 23:08:56 +0000 (00:08 +0100)]
Fix DispatchProxy arguments with [Out] methods (dotnet/corefx#34583)

* Fix DispatchProxy arguments with [Out] methods

When calling a method with the [Out] argument, DispatchProxy incorrectly interprets it as a "out" method and sets the argument to null.

* Invert the condition to improve readability

Commit migrated from https://github.com/dotnet/corefx/commit/5dbfbdf730c690dc3bad9c1d5febfe9eaf1f1e4a

5 years agoMerge pull request dotnet/corefx#35241 from wtgodbe/yaml30
William Godbe [Mon, 11 Feb 2019 22:32:37 +0000 (14:32 -0800)]
Merge pull request dotnet/corefx#35241 from wtgodbe/yaml30

Add CI runs for release/3.0

Commit migrated from https://github.com/dotnet/corefx/commit/b9288bef72e950f544563be6b4ae49ebf3920a9c

5 years agofix other projects that use LoopbackServer
Geoff Kizer [Mon, 11 Feb 2019 22:10:52 +0000 (14:10 -0800)]
fix other projects that use LoopbackServer

Commit migrated from https://github.com/dotnet/corefx/commit/700ca843faa9182dd9fa026abe7d409fa34ddb1c

5 years agobasic support for PooledConnectionLifetime for HTTP2 (dotnet/corefx#35087)
Tomas Weinfurt [Mon, 11 Feb 2019 21:56:40 +0000 (13:56 -0800)]
basic support for PooledConnectionLifetime for HTTP2 (dotnet/corefx#35087)

* basic support for PooledConnectionLifetime

* rework Http2Connection expiration

* feedback from review

* add separate LifetimeExpired() and re-factor expiration checks.

* feedback from review

Commit migrated from https://github.com/dotnet/corefx/commit/45f4518def7d416eb7bd481d118209de2e703429

5 years agoSwitch LINQ over to using ThrowHelper pattern (dotnet/corefx#35213)
Stephen Toub [Mon, 11 Feb 2019 21:28:51 +0000 (16:28 -0500)]
Switch LINQ over to using ThrowHelper pattern (dotnet/corefx#35213)

Commit migrated from https://github.com/dotnet/corefx/commit/8750960d3fafa46a9b838c351e995a01fa8b599f

5 years agoImprove the pipelines back pressure deadlock error (dotnet/corefx#33772)
Pavel Krymets [Mon, 11 Feb 2019 21:06:09 +0000 (13:06 -0800)]
Improve the pipelines back pressure deadlock error (dotnet/corefx#33772)

Commit migrated from https://github.com/dotnet/corefx/commit/45a92e78a980fc0a25f10b9d01b970a24521cf0c

5 years agoPublish built packages to artifacts on PRs as well (dotnet/corefx#35232)
Santiago Fernandez Madero [Mon, 11 Feb 2019 20:34:29 +0000 (12:34 -0800)]
Publish built packages to artifacts on PRs as well (dotnet/corefx#35232)

Commit migrated from https://github.com/dotnet/corefx/commit/c4850a44862d1d3ccc1a47de2a99d0dea4f6fd7f

5 years agoAdd PR trigger
wtgodbe [Mon, 11 Feb 2019 20:31:16 +0000 (12:31 -0800)]
Add PR trigger

Commit migrated from https://github.com/dotnet/corefx/commit/a60a0de7a9c74346fffa6e83f49a8d5d701cd227

5 years agoMerge pull request dotnet/corefx#35207 from dotnet/darc-master-be4ecac4-471a-4e11...
Stephen Toub [Mon, 11 Feb 2019 20:13:27 +0000 (15:13 -0500)]
Merge pull request dotnet/corefx#35207 from dotnet/darc-master-be4ecac4-471a-4e11-961e-78e7628e8c2c

Update dependencies from dotnet/coreclr

Commit migrated from https://github.com/dotnet/corefx/commit/09986997bfa24b73fcffbbdabe363cea60d53eff

5 years agoAdd CI runs for release/3.0
wtgodbe [Mon, 11 Feb 2019 20:03:25 +0000 (12:03 -0800)]
Add CI runs for release/3.0

Commit migrated from https://github.com/dotnet/corefx/commit/6232aedafca10eded415b2a291465189b2797ee9

5 years agoRemove Obsolete attribute from Variant APIs (dotnet/corefx#35161)
Aaron Robinson [Mon, 11 Feb 2019 19:10:26 +0000 (11:10 -0800)]
Remove Obsolete attribute from Variant APIs (dotnet/corefx#35161)

* Remove Obsolete attribute from Variant APIs

Commit migrated from https://github.com/dotnet/corefx/commit/eeaeb176be75e466ca8efc7b1c59b602ae37f1ec

5 years agoAdjust System.Diagnostics.Tracing for moved EventCounter
Stephen Toub [Mon, 11 Feb 2019 17:01:27 +0000 (12:01 -0500)]
Adjust System.Diagnostics.Tracing for moved EventCounter

Commit migrated from https://github.com/dotnet/corefx/commit/45b49ee8a56b0c53364e5c1a98c12b9d9cc8206d

5 years agoReduce the amount of slicing in GetMemory/GetSpan/Advance (dotnet/corefx#35216)
David Fowler [Mon, 11 Feb 2019 17:32:52 +0000 (09:32 -0800)]
Reduce the amount of slicing in GetMemory/GetSpan/Advance (dotnet/corefx#35216)

- Avoid setting End on the writing segment until commit or until
we're moving to the next segment.
- This ends up making the pipe a little bigger but should make writing faster.

Commit migrated from https://github.com/dotnet/corefx/commit/89adf53ea819029e44f9d27e56a81dc445233250

5 years agoUse Cdotnet/corefx#7 is operator to remove additional cast (dotnet/corefx#32131)
Kahbazi [Mon, 11 Feb 2019 16:53:27 +0000 (20:23 +0330)]
Use Cdotnet/corefx#7 is operator to remove additional cast (dotnet/corefx#32131)

Commit migrated from https://github.com/dotnet/corefx/commit/b625822b92c3bc033304eab9730412202a3080f9

5 years agoRemoving double/float from the FormatterTests.Negative.cs tests.
Tanner Gooding [Sun, 10 Feb 2019 03:40:27 +0000 (19:40 -0800)]
Removing double/float from the FormatterTests.Negative.cs tests.

Commit migrated from https://github.com/dotnet/corefx/commit/f0b95b35c9a4f6af8733fdab2c1de193515438b6

5 years agoIndex and Ranges Changes
Tarek Mahmoud Sayed [Thu, 31 Jan 2019 20:50:54 +0000 (12:50 -0800)]
Index and Ranges Changes

Commit migrated from https://github.com/dotnet/corefx/commit/60362a5c15e6684afcfa5aff7a1f7f07a771a156

5 years agoUpdate ProjectNTfs, ProjectNTfsTestILC to beta-27411-00, beta-27411-00, respectively...
dotnet-maestro-bot [Mon, 11 Feb 2019 14:32:41 +0000 (06:32 -0800)]
Update ProjectNTfs, ProjectNTfsTestILC to beta-27411-00, beta-27411-00, respectively (dotnet/corefx#35226)

Commit migrated from https://github.com/dotnet/corefx/commit/54d7c9a5e7e9f06687dd223fb13889bd528264e6

5 years agoSystem.Runtime added to known test list in BasicEventSourceTest
Sung Yoon Whang [Mon, 11 Feb 2019 10:01:42 +0000 (02:01 -0800)]
System.Runtime added to known test list in BasicEventSourceTest

Commit migrated from https://github.com/dotnet/corefx/commit/fda971e6565b84c8605aa5bb19b3ffe2a8e139c6

5 years agoFix test failures in CertificateValidationClientServer_EndToEnd_Ok (dotnet/corefx...
David Shulman [Mon, 11 Feb 2019 04:37:47 +0000 (20:37 -0800)]
Fix test failures in CertificateValidationClientServer_EndToEnd_Ok (dotnet/corefx#35225)

This System.Net.Security Functional test was always failing on my machine.
But not failing in CI. The reason is that the CI machines don't have the
TestRoot certificate installed but my machine does.

So `Capability.IsTrustedRootCertificateInstalled()` is always false on the
CI machines but true on my machine.

Due to this test almost never running that codepath, the test got bad due to
some prior refactoring and the failure wasn't noticed until now. The test was
making an incorrect assumption about the contents and sizes of certificate
collections.

I fixed the test so that it validates what it should have been doing all along.
The validation is about checking that the received/built trusted chain is valid
and that the end-entity certificate is on that chain and is trusted by the root
on that chain.

Commit migrated from https://github.com/dotnet/corefx/commit/224fa8e1e58b10b7fe1a5d3cfdedf2a1afbfe2e1

5 years agoDisable Ubuntu16.04 and 18.04 legs from PRs until they are fixed (dotnet/corefx#35223)
Santiago Fernandez Madero [Mon, 11 Feb 2019 02:09:40 +0000 (18:09 -0800)]
Disable Ubuntu16.04 and 18.04 legs from PRs until they are fixed (dotnet/corefx#35223)

Commit migrated from https://github.com/dotnet/corefx/commit/bf5266034b2f5e39cf8f67057fcedd372686f72c

5 years agoDisable AuthProxy__ValidCreds_ProxySendsRequestToServer test on Nano (dotnet/corefx...
David Shulman [Sun, 10 Feb 2019 22:32:31 +0000 (14:32 -0800)]
Disable AuthProxy__ValidCreds_ProxySendsRequestToServer test on Nano (dotnet/corefx#35221)

The System.Net.Http AuthProxy__ValidCreds_ProxySendsRequestToServer test is
frequently failing on Nano.  It is highly likely a test bug and not a product bug.

Contributes to dotnet/corefx#32809

Commit migrated from https://github.com/dotnet/corefx/commit/d0ddc1c8202f1c9e2b9913a533c3aba3202d1f65

5 years agoAdd NTLM feature detection and more tests (dotnet/corefx#35200)
David Shulman [Sun, 10 Feb 2019 16:24:06 +0000 (08:24 -0800)]
Add NTLM feature detection and more tests (dotnet/corefx#35200)

This PR works toward the goal of our Enterprise Scenarios. I added logic in the Unix
PAL gssapi layer to detect whether the NTLM plugin is installed. This is useful both
in the product code (to return better exception messages) and the test code (to
skip NTLM tests if needed).

Refactored some of the Common System.Net.Configuration logic for tests. Added new
environment variable logic to separate between domain-joined and standalone server
environments.

Add new tests to validate NTLM end-to-end connectivity. Opened some new issues
discovered along with way regarding HTTP/2 and Windows authentication.

To run these new tests simply set the 3 environment variables to point to the
standalone windows server environment.  For example, on Linux:

```
export COREFX_WINDOWSSERVER_HTTPHOST=somewindowsmachine.contoso.com
export COREFX_NET_SERVER_USERNAME=someusername
export COREFX_NET_SERVER_PASSWORD=somepassword
```

I have already deployed a standalone Windows server for these tests but
we're not ready yet to have the tests always run in CI.

Contributes to dotnet/corefx#34878

Commit migrated from https://github.com/dotnet/corefx/commit/fe6f55b496489dbd02cdd207c0b1f9112b560763

5 years agoDon't force-allocate x509ChainPolicy collections in X509Chain.Build (dotnet/corefx...
Stephen Toub [Sun, 10 Feb 2019 02:26:46 +0000 (21:26 -0500)]
Don't force-allocate x509ChainPolicy collections in X509Chain.Build (dotnet/corefx#35187) (dotnet/corefx#35209)

Previously X509ChainPolicy would always allocate its collections, but now it lazily allocates them.  However, X509Chain.Build is forcing them to be allocated even when they're not needed.  Stop doing that.

Commit migrated from https://github.com/dotnet/corefx/commit/5b8fe73971fb7885fa7afc08ceec28df9a695a23

5 years agoReduce memory allocation in Http2Stream (dotnet/corefx#35179)
Stephen Toub [Sun, 10 Feb 2019 00:32:15 +0000 (19:32 -0500)]
Reduce memory allocation in Http2Stream (dotnet/corefx#35179)

* Reduce memory allocation in Http2Stream

- Pool response buffers via ArrayPool
- Don't allocate a separate sync object
- Shrink the size of a few types

* Address PR feedback

Commit migrated from https://github.com/dotnet/corefx/commit/24aa561da2d0632dc284bc230b1147ace848d22b

5 years agoAdded methods to copy to and from streams (dotnet/corefx#35212)
David Fowler [Sat, 9 Feb 2019 23:52:29 +0000 (15:52 -0800)]
Added methods to copy to and from streams (dotnet/corefx#35212)

- Added Stream.CopyToAsync(PipeWriter)
- Added PipeWriter.CopyFromAsync(Stream)
- Added PipeReader.CopyToAsync(stream)

Commit migrated from https://github.com/dotnet/corefx/commit/603af6f2d84d9970a063bb96fbd4a2461ee3de42

5 years agoUpdate CoreFxOptimizationData, ProjectNTfs, ProjectNTfsTestILC to master-20190208...
dotnet-maestro-bot [Sat, 9 Feb 2019 20:41:54 +0000 (12:41 -0800)]
Update CoreFxOptimizationData, ProjectNTfs, ProjectNTfsTestILC to master-20190208.1, beta-27408-00, beta-27408-00, respectively (dotnet/corefx#35168)

Commit migrated from https://github.com/dotnet/corefx/commit/f26fb9c2a6fe52a5cdb9309f1b7dbe14e1e667b0

5 years agoRevert "Don't force-allocate x509ChainPolicy collections in X509Chain.Build (dotnet...
Stephen Toub [Sat, 9 Feb 2019 12:11:58 +0000 (07:11 -0500)]
Revert "Don't force-allocate x509ChainPolicy collections in X509Chain.Build (dotnet/corefx#35187)" (dotnet/corefx#35206)

This reverts commit dotnet/corefx@147e167610b9480f5a86eb50ad36006352f4a545.

Commit migrated from https://github.com/dotnet/corefx/commit/87de1b25d5c71283cc8c53d90fdace453d0916e7

5 years agoRemove Fedora from helix test queues to unblock PRs (dotnet/corefx#35192)
Santiago Fernandez Madero [Sat, 9 Feb 2019 04:15:27 +0000 (20:15 -0800)]
Remove Fedora from helix test queues to unblock PRs (dotnet/corefx#35192)

Commit migrated from https://github.com/dotnet/corefx/commit/bb6dc56247e496f5a0cf951abb1097e4851fde48

5 years agomove EventCounter to shared CoreLib (dotnet/corefx#35183)
Sung Yoon Whang [Sat, 9 Feb 2019 03:58:24 +0000 (19:58 -0800)]
move EventCounter to shared CoreLib (dotnet/corefx#35183)

Commit migrated from https://github.com/dotnet/corefx/commit/acb7df13e9fe7c91117a7ae5a85044b9caee03b8

5 years agoDon't force-allocate x509ChainPolicy collections in X509Chain.Build (dotnet/corefx...
Stephen Toub [Sat, 9 Feb 2019 02:24:51 +0000 (21:24 -0500)]
Don't force-allocate x509ChainPolicy collections in X509Chain.Build (dotnet/corefx#35187)

Previously X509ChainPolicy would always allocate its collections, but now it lazily allocates them.  However, X509Chain.Build is forcing them to be allocated even when they're not needed.  Stop doing that.

Commit migrated from https://github.com/dotnet/corefx/commit/147e167610b9480f5a86eb50ad36006352f4a545

5 years agoFix BigInteger parsing of substring span (dotnet/corefx#35185)
Stephen Toub [Sat, 9 Feb 2019 02:24:31 +0000 (21:24 -0500)]
Fix BigInteger parsing of substring span (dotnet/corefx#35185)

Commit migrated from https://github.com/dotnet/corefx/commit/73a3cf567a7b02ce4f984f5b791da19812fd8aa9

5 years agoGetMemory/GetSpan takes a minimum size (dotnet/corefx#35186)
David Fowler [Sat, 9 Feb 2019 01:40:42 +0000 (17:40 -0800)]
GetMemory/GetSpan takes a minimum size (dotnet/corefx#35186)

- We changed the contract of IBufferWriter to be more usable by making the sizeHint a minimum size. If the caller requests memory over the max pool size then we allocate.
- In the default case where we're using the shared array pool, we let the underlying pool handle this (it does internally).

Commit migrated from https://github.com/dotnet/corefx/commit/c45d88d5a1326501e31c02e508efb352a492fb59

5 years agoRemove a lot of allocation from SslStream's handshake (dotnet/corefx#35091)
Stephen Toub [Fri, 8 Feb 2019 20:09:50 +0000 (15:09 -0500)]
Remove a lot of allocation from SslStream's handshake (dotnet/corefx#35091)

* Remove a lot of allocation from SslStream's handshake

This makes a sizeable dent in the allocation incurred as part of SslStream's handshake (AuthenticateAsClient/Server{Async}), though mainly on Windows; many of these changes also impact Unix, but on Unix there's also substantially more allocation, so the relevant percentage impact is less.

Main changes:
- X509Certificate2.RawData.  This was being accessed by SslStream in order to store the byte[] away in case the RemoteCertificate property was accessed, in which case it would use it to instantiate an X509Certificate2.  That, however, was resulting in lots of sizeable byte[]s being allocated.  We can instead just instantiate an X509Certificate2 from the original, and while that entails a few additional small allocations, it's a sizeable reduction, and we'd eventually need the cert anyway if the property is accessed.
- X509ChainPolicy.  Every time Reset was called, it would allocate several new collections, but they often weren't used.  Made them lazy.
- X509 object finalization.  A bunch of X509-related objects were being left for finalization.  Those are now aggressively disposed.
- ChainPal.GetChainStatusInformation: every call was P/Invoke'ing to get a string error message for a handful of prechosen error codes... we can just get the strings once upfront and avoid allocating them each time.
- OidCollections.  A bunch of these are created but not actually populated, and each time one is created it was allocating a new List.  Changed to just have it be built around an array.
- SecPkgContext classes.  These have been converted to blittable structs, avoiding the associated allocations and marshaling costs, e.g. SecPkgContext_ApplicationProtocol would end up allocating a byte[] along with the instance itself.
- PtrToStructure.  When QueryContextAttributes was being called, in many cases PtrToStructure was being used.  This has been cleaned up, to avoid the marshaling and just use spans / casting.
- SecurityBuffer[] arrays.  Lots of code was written in terms of SecurityBuffer[], which meant lots of operations allocating these.  However, they were never larger than three items.  We now just stack allocate spans for them.
- Overloads taking both SecurityBuffer and SecurityBuffer[].  I believe because of the arrays, there were some cases where methods would take both a SecurityBuffer argument and a SecurityBuffer[] argument, with one and only one non-null.  Now that we're just passing around allocation-free spans, this has been cleaned up.
- GCHandles and GCHandle[].  Multiple methods were allocating arrays of GCHandles, and then one GCHandle.Alloc (not a managed allocation, but also not free) per SecurityBuffer.  Now that we're known to be limited to at most three, we just used fixed (even if we don't actually have three), avoiding the need for the arrays and for the GCHandle.Alloc, which is more expensive than fixed.
- SecBuffer[] arrays.  Several places were allocating a SecBuffer[]; we can just stackalloc a struct.  These are all limited by the number of SecurityBuffers passed around, which is inherently small (<= 3 in the current code).
- SecureChannel.EnsurePrivateKey.  It was always forcing a certificate's Thumbpring into existence, even though it was rarely needed.
- SecureChannel.AcquireClientCredentials.  It was always forcing a List into existence, even if it wasn't needed.
- SslAuthenticationOptions.  This internal type had several fields for delegates that were never used.  Removed.
- Span.ToArray.  In several places utilize span to create an array from a pointer/length rather than allocating the array and Marshal.Copy'ing.  This is mostly for readability.
- Also cleaned up a few things, like using ?.Dispose across System.Net.Security.
- Protocol version strings.  On Unix we were getting the protocol version constant string from the native string, allocating a managed string for it, and then comparing it against the set of known constant strings.  We don't need to do that.

There's still more that can be done.  On Windows, the two big remaining sources of allocation are for byte[]s created for data to send/receive in the handshake, and that will hopefully be addressed by work to combine SslStream/SslStreamInternal/SslState and to rewrite them to use async/await, and the allocation of the actual SecurityBuffers, which should be fairly straightforward to convert to structs (albeit with some care, as they're mutated as they're passed around).  On Unix, there's a ton more allocation, in particular as part of X509Chain building, and that should be investigated separately as part of an effort to improve performance there.

* Move SecurityBuffer to be Windows-only and make it a struct

* Rename several files

* Fix netstandard build of SqlClient

Commit migrated from https://github.com/dotnet/corefx/commit/3c30357d51b96339021b4ee52f38445c31248bb2

5 years agoUse the array pool by default instead of going through the MemoryPool (dotnet/corefx...
David Fowler [Fri, 8 Feb 2019 20:01:35 +0000 (12:01 -0800)]
Use the array pool by default instead of going through the MemoryPool (dotnet/corefx#35171)

* Use the array pool by default instead of going through the MemoryPool<T> abstraction.

* Math.Clamp isn't in netstandard2.0

* Some cleanup based on PR feedback
- Keep setting MemoryPool<byte>.Shared by default
- Fixed the pipelines solution file

Commit migrated from https://github.com/dotnet/corefx/commit/e58f923745d37a5ce5a23ce838833d1e3455e62a