// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0 && SECURITY_DEP
+#if SECURITY_DEP
using System.IO;
using System.Net.Sockets;
if (disposed == false) {
disposed = true;
byte [] bytes = null;
- bool chunked = response.SendChunked;
MemoryStream ms = GetHeaders (true);
+ bool chunked = response.SendChunked;
if (ms != null) {
long start = ms.Position;
if (chunked && !trailer_sent) {
MemoryStream GetHeaders (bool closing)
{
- if (response.HeadersSent)
- return null;
- MemoryStream ms = new MemoryStream ();
- response.SendHeaders (closing, ms);
- return ms;
+ // SendHeaders works on shared headers
+ lock (response.headers_lock) {
+ if (response.HeadersSent)
+ return null;
+ MemoryStream ms = new MemoryStream ();
+ response.SendHeaders (closing, ms);
+ return ms;
+ }
}
public override void Flush ()
if (disposed)
throw new ObjectDisposedException (GetType ().ToString ());
- bool chunked = response.SendChunked;
byte [] bytes = null;
MemoryStream ms = GetHeaders (false);
+ bool chunked = response.SendChunked;
if (ms != null) {
long start = ms.Position; // After the possible preamble for the encoding
ms.Position = ms.Length;
if (disposed)
throw new ObjectDisposedException (GetType ().ToString ());
- bool chunked = response.SendChunked;
byte [] bytes = null;
MemoryStream ms = GetHeaders (false);
+ bool chunked = response.SendChunked;
if (ms != null) {
long start = ms.Position;
ms.Position = ms.Length;