The SendAsync method in the NSUtlSessionHandler is not handling the
cancellation token correctly. Moving the Register to nearly the end of
the method (just before returning the task) ensures that if we got a
already cancelled token, we execute in a sync manner the cleanup.
Using the IsCancellationRequested in this method is less optimal
because we would have to check several times:
1. When SencAsync receives the token and before it creates the inflight
data.
2. When we are going to resume the data. Since we might have created the
inflight data and at that point an other thread cancelled the request.
Fixes: https://github.com/xamarin/xamarin-macios/issues/5511
Even if we don't end up using those variable during a normal build (when
building from source), it can still be useful that commands like `make download`
continue to work.
It also fixes a make warning:
Making all in builds
Makefile:16: warning: overriding commands for target `downloads/'
Makefile:9: warning: ignoring old commands for target `downloads/'
* Make PreserveSmartEnumConversionsSubStep use error codes that are not
already used elsewhere: this isn't obvious at first, but all
ExceptionalSubStep errors use a range of error numbers (10 numbers from NNN0
to NNN9), so we need to reserve that entire range. In this case there were
other errors using some of the numbers of the range for PreserveSmartEnumConversionsSubStep.
* Make sure there are anchor links for all the variations of each ExceptionalSubStep error.
Rework BCL test importation to generate projects that won't compile instead of
giving up completely in case of generation failure.
This means that xharness can still be used for non-BCL tests even if the
generation of the BCL tests fail.
* [tests] Use latest version of NUnit for test projects to get support for parallelized tests.
* [xharness] Automatically find the correct nunit-console executable for NUnit tests.
This is usually not a problem, because these variables are already set when
running from the command-line or xharness. However, it shows up when running
tests directly from VSfM.
Example (previous behavior):
args.Add ("-a");
args.AddLine ("-b")
args.Add ("-c");
would result in:
-a-b
-c
which is obviously not correct.
New result:
-a -b
-c
which is much better.
Sometimes we just Log a string without any format arguments. This works fine,
until the string comes from the user, and happen to contain braces, in which
case an invalid format exception is thrown.
Adding Log overloads that doesn't take format arguments (nor formats its
input) avoids this problem.