Bug 42864

Summary: [Cycle 7] "System.Net.WebException: Error: NameResolutionFailure" on second web request to certain raw IP addresses with HttpClient
Product: [Mono] Class Libraries Reporter: Brendan Zagaeski (Xamarin Support) <brendan.zagaeski>
Component: SystemAssignee: Marek Safar <masafa>
Status: VERIFIED FIXED    
Severity: major CC: aceo, atinc, jean-baptiste.girard, luis.aguilera, masafa, mono-bugs+mono, petr.brant
Priority: High    
Version: 4.4.0 (C7)   
Target Milestone: 4.6.0 (C8)   
Hardware: PC   
OS: Mac OS   
Tags: BZRC7S1_C6SR4S1, C8Beta1 Is this bug a regression?: Yes
Last known good build: Mono 4.2.4 (71b88f3)
Bug Depends on: 41782    
Bug Blocks:    

Description Brendan Zagaeski (Xamarin Support) 2016-07-28 00:45:47 UTC
[Cycle 7] "System.Net.WebException: Error: NameResolutionFailure" on second web request to certain raw IP addresses with HttpClient


This is a follow-up to Bug 41782.  At least when using HttpClient as in the code example below, `ServicePoint.get_HostEntry()` [1] gets called 2 separate times, once for each request.  On the second time, `host` is non-null and `HasTimedOut` is true, so `get_HostEntry()` returns `null` rather than returning the non-null `host`.

[1] https://github.com/mono/mono/blob/d35b5d218894e15cec84273d77cf4a61985edb5f/mcs/class/System/System.Net/ServicePoint.cs#L348




## Steps to replicate

Replace the IP address in the following program with a "bad" IP address that hits the problem and run the program.


using System.Net.Http;

namespace ConsoleApp1
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            DoRequest();
            DoRequest();
        }

        public static void DoRequest()
        {
            var httpClient = new HttpClient();

            var responseTask = httpClient.GetAsync("http://127.0.0.1");
            responseTask.ConfigureAwait(false);
            var response = responseTask.Result;
        }
    }
}




## Regression status: regression in Cycle 7

BAD:  Mono 4.6.0 (mono-4.6.0-branch/37dea728)      "C8"
BAD:  Mono 4.4.2 (mono-4.4.0-branch-c7sr1/b430435) "C7SR1"
GOOD: Mono 4.2.4 (explicit/71b88f3)                "C6SR4"




## BAD Results

The second call to `DoRequest()` fails:

> Unhandled Exception:
> System.AggregateException: One or more errors occurred. ---> System.Net.WebException: Error: NameResolutionFailure



## GOOD Results

The app runs to completion without error.
Comment 2 Brendan Zagaeski (Xamarin Support) 2016-07-28 00:50:31 UTC
*** Bug 42850 has been marked as a duplicate of this bug. ***
Comment 5 Marek Safar 2016-08-16 13:26:47 UTC
Fixed in master and Mono 4.6