Bug 19559 - Different exceptions for .net and Mono when a HttpListener looses connection
Summary: Different exceptions for .net and Mono when a HttpListener looses connection
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: System (show other bugs)
Version: 3.2.x
Hardware: Other Linux
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2014-05-06 10:45 UTC by georch
Modified: 2014-05-06 10:45 UTC (History)
1 user (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description georch 2014-05-06 10:45:22 UTC
Use the following code on both platforms:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Server
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpListener listener = new HttpListener();
            listener.Prefixes.Add("http://127.0.0.1:10000/");
            listener.Start();
            var context = listener.GetContext();
            StreamWriter writer = new StreamWriter(context.Response.OutputStream);
            writer.Write("test");
            Console.WriteLine("waiting");
            Thread.Sleep(2000);
            Console.WriteLine("finished");
            try
            {
                writer.Close();
            }
            catch (HttpListenerException)
            {
                Console.WriteLine("Using .net");
            }
            catch (IOException)
            {
                Console.WriteLine("Using mono");
            }
            writer.Dispose();
            context.Response.Close();
            listener.Stop();
            Console.ReadLine();
        }
    }
}

Now run it on Linux, open a browser and type "http://127.0.0.1:10000" and quickly hit "Stop". Same procedure on windows yields different exceptions.
It's not a huge thing, but it's annoying when the same code doesn't work on Linux.

Note You need to log in before you can comment on or make changes to this bug.