| Newsgroups |
gmane.comp.gnome.mono.patches |
| Message-ID |
<00000141a3beb7f0-99545587-2785-4c69-b2e0-5ca42ceedbc7-000000@email.amazonses.com> |
Branch: refs/heads/master
Home: https://github.com/mono/xsp
Compare: https://github.com/mono/xsp/compare/5297b2c62818...6739dd07ec52
Commit: d812716e7f3f1670e200bdeadff228543227f94a
Author: Leonardo Taglialegne <[email protected]> (miniBill)
Date: 2013-10-05 20:48:57 GMT
URL: https://github.com/mono/xsp/commit/d812716e7f3f1670e200bdeadff228543227f94a
[FastCgi] Fix bug with big responses
Changed paths:
M src/Mono.WebServer.FastCgi/Buffers.cs
M src/Mono.WebServer.FastCgi/Connection.cs
Modified: src/Mono.WebServer.FastCgi/Buffers.cs
===================================================================
@@ -31,7 +31,7 @@
namespace Mono.WebServer.FastCgi
{
- public struct Buffers
+ public class Buffers
{
public CompatArraySegment<byte>? Header { get; private set; }
public CompatArraySegment<byte>? Body { get; private set; }
@@ -40,8 +40,11 @@ public struct Buffers
readonly BufferManager bigBufferManager;
readonly BufferManager smallBufferManager;
+ public Buffers ()
+ {
+ }
+
public Buffers (BufferManager bigBufferManager, BufferManager smallBufferManager)
- : this ()
{
if (bigBufferManager == null)
throw new ArgumentNullException ("bigBufferManager");
@@ -55,7 +58,7 @@ public Buffers (BufferManager bigBufferManager, BufferManager smallBufferManager
Padding = smallBufferManager.ClaimBuffer ();
}
- public Buffers (byte[] buffer, int headerSize, int bodySize) : this ()
+ public Buffers (byte[] buffer, int headerSize, int bodySize)
{
Header = MaybeSegment (buffer, 0, headerSize);
Body = MaybeSegment (buffer, headerSize, bodySize);
@@ -79,6 +82,7 @@ public CompatArraySegment<byte> EnforceBodyLength (int length)
bigBufferManager.ReturnBuffer (Body.Value);
Body = new CompatArraySegment<byte> (new byte[length]);
}
+
return Body.Value;
}
@@ -94,9 +98,7 @@ public CompatArraySegment<byte> EnforcePaddingLength (int length)
static CompatArraySegment<byte>? MaybeSegment (byte[] buffer, int offset)
{
- if (buffer == null)
- return null;
- return MaybeSegment (buffer, offset, buffer.Length - offset);
+ return buffer == null ? null : MaybeSegment (buffer, offset, buffer.Length - offset);
}
static CompatArraySegment<byte>? MaybeSegment (byte[] buffer, int offset, int count)
Modified: src/Mono.WebServer.FastCgi/Connection.cs
===================================================================
@@ -31,6 +31,7 @@
using Mono.WebServer.Log;
using Mono.WebServer.FastCgi;
using NRecord = Mono.WebServer.FastCgi.Record;
+using Mono.WebServer.FastCgi.Compatibility;
namespace Mono.FastCgi {
public class Connection
@@ -337,8 +338,8 @@ void HandleBeginRequest (Request request, NRecord record)
if (IsConnected)
lock (send_lock) {
try {
- send_buffers.EnforceBodyLength(bodyLength);
- Array.Copy(bodyData, bodyIndex, send_buffers.Body.Value.Array, send_buffers.Body.Value.Offset, bodyLength);
+ CompatArraySegment<byte> body = send_buffers.EnforceBodyLength(bodyLength);
+ Array.Copy(bodyData, bodyIndex, body.Array, body.Offset, bodyLength);
var record = new NRecord (1, type, requestID, bodyLength, send_buffers);
record.Send (socket);
} catch (System.Net.Sockets.SocketException) {
@@ -353,8 +354,8 @@ void HandleBeginRequest (Request request, NRecord record)
try {
if (IsConnected) {
byte[] bodyData = body.GetData ();
- send_buffers.EnforceBodyLength(bodyData.Length);
- Array.Copy(bodyData, 0, send_buffers.Body.Value.Array, send_buffers.Body.Value.Offset, bodyData.Length);
+ CompatArraySegment<byte> bodyBuffer = send_buffers.EnforceBodyLength(bodyData.Length);
+ Array.Copy(bodyData, 0, bodyBuffer.Array, bodyBuffer.Offset, bodyData.Length);
var record = new NRecord (1, RecordType.EndRequest, requestID, bodyData.Length, send_buffers);
record.Send (socket);
}
Commit: 6739dd07ec52d8f3fb37109739a95f1dabc384b6
Author: Miguel de Icaza <[email protected]> (migueldeicaza)
Date: 2013-10-10 18:59:20 GMT
URL: https://github.com/mono/xsp/commit/6739dd07ec52d8f3fb37109739a95f1dabc384b6
Merge pull request #63 from miniBill/master
[FastCgi] Fix bug with big responses
Changed paths:
M src/Mono.WebServer.FastCgi/Buffers.cs
M src/Mono.WebServer.FastCgi/Connection.cs
Modified: src/Mono.WebServer.FastCgi/Buffers.cs
===================================================================
@@ -31,7 +31,7 @@
namespace Mono.WebServer.FastCgi
{
- public struct Buffers
+ public class Buffers
{
public CompatArraySegment<byte>? Header { get; private set; }
public CompatArraySegment<byte>? Body { get; private set; }
@@ -40,8 +40,11 @@ public struct Buffers
readonly BufferManager bigBufferManager;
readonly BufferManager smallBufferManager;
+ public Buffers ()
+ {
+ }
+
public Buffers (BufferManager bigBufferManager, BufferManager smallBufferManager)
- : this ()
{
if (bigBufferManager == null)
throw new ArgumentNullException ("bigBufferManager");
@@ -55,7 +58,7 @@ public Buffers (BufferManager bigBufferManager, BufferManager smallBufferManager
Padding = smallBufferManager.ClaimBuffer ();
}
- public Buffers (byte[] buffer, int headerSize, int bodySize) : this ()
+ public Buffers (byte[] buffer, int headerSize, int bodySize)
{
Header = MaybeSegment (buffer, 0, headerSize);
Body = MaybeSegment (buffer, headerSize, bodySize);
@@ -79,6 +82,7 @@ public CompatArraySegment<byte> EnforceBodyLength (int length)
bigBufferManager.ReturnBuffer (Body.Value);
Body = new CompatArraySegment<byte> (new byte[length]);
}
+
return Body.Value;
}
@@ -94,9 +98,7 @@ public CompatArraySegment<byte> EnforcePaddingLength (int length)
static CompatArraySegment<byte>? MaybeSegment (byte[] buffer, int offset)
{
- if (buffer == null)
- return null;
- return MaybeSegment (buffer, offset, buffer.Length - offset);
+ return buffer == null ? null : MaybeSegment (buffer, offset, buffer.Length - offset);
}
static CompatArraySegment<byte>? MaybeSegment (byte[] buffer, int offset, int count)
Modified: src/Mono.WebServer.FastCgi/Connection.cs
===================================================================
@@ -31,6 +31,7 @@
using Mono.WebServer.Log;
using Mono.WebServer.FastCgi;
using NRecord = Mono.WebServer.FastCgi.Record;
+using Mono.WebServer.FastCgi.Compatibility;
namespace Mono.FastCgi {
public class Connection
@@ -337,8 +338,8 @@ void HandleBeginRequest (Request request, NRecord record)
if (IsConnected)
lock (send_lock) {
try {
- send_buffers.EnforceBodyLength(bodyLength);
- Array.Copy(bodyData, bodyIndex, send_buffers.Body.Value.Array, send_buffers.Body.Value.Offset, bodyLength);
+ CompatArraySegment<byte> body = send_buffers.EnforceBodyLength(bodyLength);
+ Array.Copy(bodyData, bodyIndex, body.Array, body.Offset, bodyLength);
var record = new NRecord (1, type, requestID, bodyLength, send_buffers);
record.Send (socket);
} catch (System.Net.Sockets.SocketException) {
@@ -353,8 +354,8 @@ void HandleBeginRequest (Request request, NRecord record)
try {
if (IsConnected) {
byte[] bodyData = body.GetData ();
- send_buffers.EnforceBodyLength(bodyData.Length);
- Array.Copy(bodyData, 0, send_buffers.Body.Value.Array, send_buffers.Body.Value.Offset, bodyData.Length);
+ CompatArraySegment<byte> bodyBuffer = send_buffers.EnforceBodyLength(bodyData.Length);
+ Array.Copy(bodyData, 0, bodyBuffer.Array, bodyBuffer.Offset, bodyData.Length);
var record = new NRecord (1, RecordType.EndRequest, requestID, bodyData.Length, send_buffers);
record.Send (socket);
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches