Skip to content

Commit edeaff3

Browse files
committed
Handle sockets being closed when serving assets
1 parent 5a47782 commit edeaff3

2 files changed

Lines changed: 40 additions & 12 deletions

File tree

SourceUtils.WebExport/ResourceController.cs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Globalization;
55
using System.IO;
66
using System.Linq;
7+
using System.Net;
78
using System.Net.NetworkInformation;
89
using System.Text;
910
using System.Web;
@@ -181,6 +182,12 @@ public override void WriteRaw( JsonWriter writer, JsonSerializer serializer )
181182

182183
writer.WriteStartArray();
183184

185+
if ( Count == 0 )
186+
{
187+
writer.WriteEndArray();
188+
return;
189+
}
190+
184191
var formatString = FormatString;
185192

186193
foreach ( var item in this )
@@ -362,20 +369,34 @@ static ResourceController()
362369

363370
protected override void OnServiceText( string text )
364371
{
365-
var ext = Path.GetExtension( Request.Url.AbsolutePath );
372+
try
373+
{
374+
var ext = Path.GetExtension( Request.Url.AbsolutePath );
366375

367-
Response.ContentType = MimeTypeMap.GetMimeType( ext );
376+
Response.ContentType = MimeTypeMap.GetMimeType( ext );
368377

369-
using ( var writer = new StreamWriter( Response.OutputStream ) )
378+
using ( var writer = new StreamWriter( Response.OutputStream ) )
379+
{
380+
writer.Write( text );
381+
}
382+
}
383+
catch ( HttpListenerException )
370384
{
371-
writer.Write( text );
385+
//
372386
}
373387
}
374388

375389
[ResponseWriter]
376390
public void OnWriteObject( object obj )
377391
{
378-
OnServiceJson( obj == null ? null : JObject.FromObject( obj, _sSerializer ) );
392+
try
393+
{
394+
OnServiceJson( obj == null ? null : JObject.FromObject( obj, _sSerializer ) );
395+
}
396+
catch (HttpListenerException)
397+
{
398+
//
399+
}
379400
}
380401

381402
protected virtual bool ForceNoFormatting => false;
@@ -393,7 +414,7 @@ protected override void OnServiceJson( JToken token )
393414
#if DEBUG
394415
writer.Write( token.ToString( ForceNoFormatting ? Formatting.None : Formatting.Indented ) );
395416
#else
396-
writer.Write( token.ToString( Formatting.None ) );
417+
writer.Write( token.ToString( Formatting.None ) );
397418
#endif
398419
}
399420
}

SourceUtils.WebExport/StaticFiles.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
using System;
1+
using JetBrains.Annotations;
2+
using MimeTypes;
3+
using System;
24
using System.Collections.Generic;
35
using System.IO;
4-
using System.Reflection;
5-
using JetBrains.Annotations;
6-
using MimeTypes;
6+
using System.Net;
77
using Ziks.WebServer;
88

99
namespace SourceUtils.WebExport
@@ -22,9 +22,16 @@ class StaticController : Controller
2222
{
2323
protected override void OnServiceText( string text )
2424
{
25-
using ( var writer = new StreamWriter( Response.OutputStream ) )
25+
try
26+
{
27+
using ( var writer = new StreamWriter( Response.OutputStream ) )
28+
{
29+
writer.Write( text );
30+
}
31+
}
32+
catch ( HttpListenerException )
2633
{
27-
writer.Write( text );
34+
//
2835
}
2936
}
3037

0 commit comments

Comments
 (0)