aboutsummaryrefslogtreecommitdiff
path: root/SocketHttpListener/Net
diff options
context:
space:
mode:
Diffstat (limited to 'SocketHttpListener/Net')
-rw-r--r--SocketHttpListener/Net/HttpConnection.cs2
-rw-r--r--SocketHttpListener/Net/HttpResponseStream.Managed.cs20
2 files changed, 16 insertions, 6 deletions
diff --git a/SocketHttpListener/Net/HttpConnection.cs b/SocketHttpListener/Net/HttpConnection.cs
index 627b671bf..eda633207 100644
--- a/SocketHttpListener/Net/HttpConnection.cs
+++ b/SocketHttpListener/Net/HttpConnection.cs
@@ -220,7 +220,7 @@ namespace SocketHttpListener.Net
//o_stream = new ResponseStream(stream, context.Response, _memoryStreamFactory, _textEncoding, _fileSystem, sock, supportsDirectSocketAccess, _logger, _environment);
- o_stream = new HttpResponseStream(stream, context.Response, false, _memoryStreamFactory, sock, supportsDirectSocketAccess, _environment, _fileSystem);
+ o_stream = new HttpResponseStream(stream, context.Response, false, _memoryStreamFactory, sock, supportsDirectSocketAccess, _environment, _fileSystem, _logger);
}
return o_stream;
}
diff --git a/SocketHttpListener/Net/HttpResponseStream.Managed.cs b/SocketHttpListener/Net/HttpResponseStream.Managed.cs
index 0a9efccb2..73c296580 100644
--- a/SocketHttpListener/Net/HttpResponseStream.Managed.cs
+++ b/SocketHttpListener/Net/HttpResponseStream.Managed.cs
@@ -3,11 +3,13 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
+using System.Net.Sockets;
using System.Runtime.ExceptionServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.System;
@@ -54,7 +56,9 @@ namespace SocketHttpListener.Net
private readonly bool _supportsDirectSocketAccess;
private readonly IEnvironmentInfo _environment;
private readonly IFileSystem _fileSystem;
- internal HttpResponseStream(Stream stream, HttpListenerResponse response, bool ignore_errors, IMemoryStreamFactory memoryStreamFactory, IAcceptSocket socket, bool supportsDirectSocketAccess, IEnvironmentInfo environment, IFileSystem fileSystem)
+ private readonly ILogger _logger;
+
+ internal HttpResponseStream(Stream stream, HttpListenerResponse response, bool ignore_errors, IMemoryStreamFactory memoryStreamFactory, IAcceptSocket socket, bool supportsDirectSocketAccess, IEnvironmentInfo environment, IFileSystem fileSystem, ILogger logger)
{
_response = response;
_ignore_errors = ignore_errors;
@@ -63,6 +67,7 @@ namespace SocketHttpListener.Net
_supportsDirectSocketAccess = supportsDirectSocketAccess;
_environment = environment;
_fileSystem = fileSystem;
+ _logger = logger;
_stream = stream;
}
@@ -173,7 +178,7 @@ namespace SocketHttpListener.Net
{
_stream.Write(buffer, offset, count);
}
- catch (IOException ex)
+ catch (Exception ex)
{
throw new HttpListenerException(ex.HResult, ex.Message);
}
@@ -265,7 +270,7 @@ namespace SocketHttpListener.Net
{
return _stream.BeginWrite(buffer, offset, size, cback, state);
}
- catch (IOException ex)
+ catch (Exception ex)
{
if (_ignore_errors)
{
@@ -305,12 +310,12 @@ namespace SocketHttpListener.Net
if (_response.SendChunked)
_stream.Write(s_crlf, 0, 2);
}
- catch (IOException ex)
+ catch (Exception ex)
{
// NetworkStream wraps exceptions in IOExceptions; if the underlying socket operation
// failed because of invalid arguments or usage, propagate that error. Otherwise
// wrap the whole thing in an HttpListenerException. This is all to match Windows behavior.
- if (ex.InnerException is ArgumentException || ex.InnerException is InvalidOperationException)
+ if (ex.InnerException is ArgumentException || ex.InnerException is InvalidOperationException || ex.InnerException is SocketException)
{
throw ex.InnerException;
}
@@ -365,6 +370,11 @@ namespace SocketHttpListener.Net
{
var allowAsync = _environment.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows;
+ //if (count <= 0)
+ //{
+ // allowAsync = true;
+ //}
+
var fileOpenOptions = offset > 0
? FileOpenOptions.RandomAccess
: FileOpenOptions.SequentialScan;