Skip to content

Commit 8b5868f

Browse files
committed
Revert "Add support for chunked httpclient and httpresponse. (#823)"
This reverts commit 4fbfb00.
1 parent 182bf36 commit 8b5868f

File tree

5 files changed

+48
-135
lines changed

5 files changed

+48
-135
lines changed

dotnet/src/dotnetframework/GxClasses/Core/Web/GxHttpServer.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ namespace GeneXus.Http.Server
1212
using System.Linq;
1313
using Microsoft.AspNetCore.Http.Features;
1414
using System.Text;
15+
using System.Threading.Tasks;
16+
using Microsoft.AspNetCore.Mvc.Formatters;
17+
using System.Net.Http;
18+
using Stubble.Core.Contexts;
19+
using System.Net.Mime;
20+
1521
#endif
1622

1723
public class GxHttpCookie

dotnet/src/dotnetframework/GxClasses/Domain/GxHttpClient.cs

Lines changed: 18 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public class GxHttpClient : IGxHttpClient, IDisposable
6666
const int StreamWriterDefaultBufferSize = 1024;
6767
Stream _sendStream;
6868
byte[] _receiveData;
69-
StreamReader _receiveStream;
7069
int _timeout = 30000;
7170
short _statusCode = 0;
7271
string _proxyHost;
@@ -134,14 +133,6 @@ internal byte[] ReceiveData
134133
{
135134
get
136135
{
137-
if (_chunkedResponse && _receiveData == null && _receiveStream!=null)
138-
{
139-
using (MemoryStream memstream = new MemoryStream())
140-
{
141-
_receiveStream.BaseStream.CopyTo(memstream);
142-
_receiveData = memstream.ToArray();
143-
}
144-
}
145136
return _receiveData;
146137
}
147138
}
@@ -423,7 +414,6 @@ public void AddHeader(string name, string value)
423414
GXLogging.Error(log, String.Format("Error parsing charset ", value, ex));
424415
}
425416
}
426-
427417
_headers.Set(name, value);
428418
}
429419
public void ClearVariables()
@@ -707,7 +697,7 @@ HttpResponseMessage ExecuteRequest(string method, string requestUrl, CookieConta
707697
reqStream.Seek(0, SeekOrigin.Begin);
708698
request.Content = new ByteArrayContent(reqStream.ToArray());
709699
setHeaders(request, handler.CookieContainer);
710-
response = client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).GetAwaiter().GetResult();
700+
response = client.SendAsync(request).GetAwaiter().GetResult();
711701
}
712702
}
713703
return response;
@@ -718,7 +708,6 @@ void ReadReponseContent(HttpResponseMessage response)
718708
try
719709
{
720710
Stream stream = response.Content.ReadAsStreamAsync().GetAwaiter().GetResult();
721-
_chunkedResponse = response.Headers.TransferEncodingChunked.HasValue && response.Headers.TransferEncodingChunked.Value;
722711
string charset;
723712
if (response.Content.Headers.ContentType == null)
724713
charset = null;
@@ -741,28 +730,18 @@ void ReadReponseContent(HttpResponseMessage response)
741730
charset = String.Empty;
742731
}
743732
}
744-
if (_chunkedResponse)
733+
734+
using (MemoryStream ms = new MemoryStream())
745735
{
746-
if (_encoding == null)
747-
_encoding = Encoding.UTF8;
748-
749-
_receiveStream = new StreamReader(stream, _encoding);
750-
_receiveData = null;
736+
stream.CopyTo(ms);
737+
_receiveData = ms.ToArray();
751738
}
752-
else
739+
int bytesRead = _receiveData.Length;
740+
GXLogging.Debug(log, "BytesRead " + _receiveData.Length);
741+
if (bytesRead > 0 && !encodingFound)
753742
{
754-
using (MemoryStream ms = new MemoryStream())
755-
{
756-
stream.CopyTo(ms);
757-
_receiveData = ms.ToArray();
758-
}
759-
int bytesRead = _receiveData.Length;
760-
GXLogging.Debug(log, "BytesRead " + _receiveData.Length);
761-
if (bytesRead > 0 && !encodingFound)
762-
{
763-
_encoding = DetectEncoding(charset, out encodingFound, _receiveData, bytesRead);
764-
}
765-
}
743+
_encoding = DetectEncoding(charset, out encodingFound, _receiveData, bytesRead);
744+
}
766745
}
767746
catch (IOException ioEx)
768747
{
@@ -808,7 +787,7 @@ public void Execute(string method, string name)
808787

809788
public void HttpClientExecute(string method, string name)
810789
{
811-
response = null;
790+
HttpResponseMessage response = null;
812791
Byte[] Buffer = new Byte[1024];
813792
_errCode = 0;
814793
_errDescription = string.Empty;
@@ -889,11 +868,11 @@ public void HttpClientExecute(string method, string name)
889868
_errDescription = "The remote server returned an error: (" + _statusCode + ") " + _statusDescription + ".";
890869
}
891870
ClearSendStream();
871+
GXLogging.DebugSanitized(log, "_responseString " + ToString());
892872
}
893873
NameValueCollection _respHeaders;
894874
private bool disposedValue;
895-
private bool _chunkedResponse;
896-
HttpResponseMessage response;
875+
897876
void LoadResponseHeaders(HttpResponseMessage resp)
898877
{
899878
_respHeaders = new NameValueCollection();
@@ -1381,65 +1360,14 @@ private Encoding ExtractEncodingFromCharset(string responseText, string regExpP,
13811360
}
13821361
return enc;
13831362
}
1384-
public bool Eof
1385-
{
1386-
get
1387-
{
1388-
if (_chunkedResponse && _receiveStream != null)
1389-
{
1390-
return _receiveStream.EndOfStream;
1391-
}
1392-
return true;
1393-
}
1394-
}
13951363

1396-
public string ReadChunk()
1397-
{
1398-
if (_chunkedResponse)
1399-
{
1400-
if (_receiveStream != null)
1401-
{
1402-
if (!_receiveStream.EndOfStream)
1403-
{
1404-
string line = _receiveStream.ReadLine();
1405-
if (line != null)
1406-
return line;
1407-
}
1408-
else
1409-
{
1410-
_receiveStream.Dispose();
1411-
_receiveStream = null;
1412-
response.Dispose();
1413-
response = null;
1414-
}
1415-
}
1416-
return string.Empty;
1417-
}
1418-
else
1419-
return ToString();
1420-
}
14211364
public override string ToString()
14221365
{
1423-
string responseString;
1424-
if (_chunkedResponse)
1425-
{
1426-
StringBuilder sb = new StringBuilder();
1427-
while (!Eof){
1428-
sb.Append(ReadChunk());
1429-
}
1430-
responseString = sb.ToString();
1431-
}
1432-
else
1433-
{
1434-
if (_encoding == null)
1435-
_encoding = Encoding.UTF8;
1436-
if (_receiveData == null)
1437-
return string.Empty;
1438-
1439-
responseString = _encoding.GetString(_receiveData);
1440-
}
1441-
GXLogging.DebugSanitized(log, "_responseString " + responseString);
1442-
return responseString;
1366+
if (_encoding == null)
1367+
_encoding = Encoding.UTF8;
1368+
if (_receiveData == null)
1369+
return string.Empty;
1370+
return _encoding.GetString(_receiveData);
14431371
}
14441372
public void ToFile(string fileName)
14451373
{
@@ -1529,7 +1457,6 @@ protected virtual void Dispose(bool disposing)
15291457
{
15301458
_receiveData = null;
15311459
_sendStream?.Dispose();
1532-
_receiveStream?.Dispose();
15331460
}
15341461
disposedValue = true;
15351462
}

dotnet/src/dotnetframework/GxClasses/Helpers/HttpHelper.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,6 @@ public class HttpHeader
4848
public static string LAST_MODIFIED = "Last-Modified";
4949
public static string EXPIRES = "Expires";
5050
public static string XGXFILENAME = "x-gx-filename";
51-
internal static string ACCEPT = "Accept";
52-
internal static string TRANSFER_ENCODING = "Transfer-Encoding";
53-
}
54-
internal class HttpHeaderValue
55-
{
56-
internal static string ACCEPT_SERVER_SENT_EVENT = "text/event-stream";
57-
internal static string TRANSFER_ENCODING_CHUNKED = "chunked";
5851
}
5952
[DataContract()]
6053
public class HttpJsonError

dotnet/src/dotnetframework/GxClasses/Middleware/GXHttp.cs

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1933,10 +1933,10 @@ public void ProcessRequest(HttpContext httpContext)
19331933
InitPrivates();
19341934
try
19351935
{
1936-
SetStreaming();
1936+
#if NETCORE
19371937
SendHeaders();
19381938
string clientid = context.ClientID; //Send clientid cookie (before response HasStarted) if necessary, since UseResponseBuffering is not in .netcore3.0
1939-
1939+
#endif
19401940
bool validSession = ValidWebSession();
19411941
if (validSession && IntegratedSecurityEnabled)
19421942
validSession = ValidSession();
@@ -1971,6 +1971,9 @@ public void ProcessRequest(HttpContext httpContext)
19711971
context.DispatchAjaxCommands();
19721972
}
19731973
SetCompression(httpContext);
1974+
#if !NETCORE
1975+
SendHeaders();
1976+
#endif
19741977
context.ResponseCommited = true;
19751978
}
19761979
catch (Exception e)
@@ -1985,25 +1988,6 @@ public void ProcessRequest(HttpContext httpContext)
19851988
throw new Exception("GXApplication exception", e);
19861989
}
19871990
}
1988-
protected virtual bool ChunkedStreaming() { return false; }
1989-
1990-
private void SetStreaming()
1991-
{
1992-
#if !NETCORE
1993-
if (ChunkedStreaming())
1994-
{
1995-
BringSessionStateToLife();
1996-
context.HttpContext.Response.BufferOutput = false;
1997-
}
1998-
#endif
1999-
}
2000-
#if !NETCORE
2001-
private void BringSessionStateToLife()
2002-
{
2003-
string sessionId = context.HttpContext.Session.SessionID;
2004-
GXLogging.Debug(log, "Session is alive: " + sessionId);
2005-
}
2006-
#endif
20071991
internal string DumpHeaders(HttpContext httpContext)
20081992
{
20091993
StringBuilder str = new StringBuilder();
@@ -2049,6 +2033,7 @@ private bool ValidWebSession()
20492033
#else
20502034
bool isExpired = IsFullAjaxRequest(HttpContext.Current) && this.AjaxOnSessionTimeout() == "Warn" && GxWebSession.IsSessionExpired(localHttpContext);
20512035
#endif
2036+
20522037
if (isExpired)
20532038
{
20542039
GXLogging.Info(log, "440 Session timeout. Web Session has expired and GX' OnSessionTimeout' Pty is set to 'WARN'");
@@ -2236,15 +2221,23 @@ public virtual void sendAdditionalHeaders()
22362221
return;
22372222

22382223
string safeIECompMode = IE_COMP_Edge.Equals(IE_COMP_EmulateIE7) ? IE_COMP_Edge : IE_COMP_Edge;
2224+
#if NETCORE
22392225
localHttpContext.Response.Headers["X-UA-Compatible"] = "IE=" + safeIECompMode;
2226+
#else
2227+
localHttpContext.Response.AddHeader("X-UA-Compatible", "IE=" + safeIECompMode);
2228+
#endif
22402229
}
22412230
}
22422231

22432232
}
22442233

22452234
protected virtual void sendSpaHeaders()
22462235
{
2236+
#if NETCORE
22472237
localHttpContext.Response.Headers[GX_SPA_GXOBJECT_RESPONSE_HEADER] = GetPgmname().ToLower();
2238+
#else
2239+
localHttpContext.Response.AddHeader(GX_SPA_GXOBJECT_RESPONSE_HEADER, GetPgmname().ToLower());
2240+
#endif
22482241
}
22492242

22502243
private void webExecuteWorker(object target)
@@ -3070,6 +3063,15 @@ public abstract class GXDataArea : GXHttpHandler
30703063

30713064
protected GXMasterPage MasterPageObj { get; set; }
30723065

3066+
protected override void sendSpaHeaders()
3067+
{
3068+
base.sendSpaHeaders();
3069+
if (MasterPageObj != null)
3070+
{
3071+
localHttpContext.Response.AddHeader(GX_SPA_MASTERPAGE_HEADER, MasterPageObj.GetPgmname());
3072+
}
3073+
}
3074+
30733075
protected override void ValidateSpaRequest()
30743076
{
30753077
string sourceMasterPage = localHttpContext.Request.Headers[GX_SPA_MASTERPAGE_HEADER];
@@ -3078,10 +3080,6 @@ protected override void ValidateSpaRequest()
30783080
context.DisableSpaRequest();
30793081
sendSpaHeaders();
30803082
}
3081-
if (MasterPageObj != null)
3082-
{
3083-
localHttpContext.Response.Headers[GX_SPA_MASTERPAGE_HEADER] = MasterPageObj.GetPgmname();
3084-
}
30853083
}
30863084
}
30873085
public class GXDataAreaControl

dotnet/src/dotnetframework/GxClasses/Model/GXWebProcedure.cs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ namespace GeneXus.Procedure
88
using System.Threading;
99
using GeneXus.Mime;
1010
using GeneXus.Utils;
11-
#if NETCORE
12-
using Microsoft.AspNetCore.Http;
13-
#else
14-
using System.Web;
15-
#endif
1611
using log4net;
1712
using GeneXus.Application;
1813
using GeneXus.Data.NTier;
@@ -51,13 +46,7 @@ public override void cleanup()
5146
context.DeleteReferer();
5247
}
5348
}
54-
protected override void SetCompression(HttpContext httpContext)
55-
{
56-
if (!ChunkedStreaming())
57-
{
58-
base.SetCompression(httpContext);
59-
}
60-
}
49+
6150
public void setContextReportHandler()
6251
{
6352

0 commit comments

Comments
 (0)