Arno,
No luck I'm afraid... I'm still getting those AV's :(
Keith.
Here's my current code... As per your suggested code.
I also made the TMemoryManager global to the application.
I will try free and malloc next.
<<< CODE SNIPPETS >>>
//--------------------------------------------------------------------------
-
class TMyHttpConnection : public THttpConnection
{
public:
char *PostedDataBuffer; // Will hold dynamically allocated buffer
int PostedDataSize; // Databuffer size
int RcvdByteCount; // Keep track of received byte count.
public:
__fastcall TMyHttpConnection(Classes::TComponent* AOwner);
virtual __fastcall ~TMyHttpConnection();
};
//--------------------------------------------------------------------------
-
//--------------------------------------------------------------------------
-
__fastcall TMyHttpConnection::TMyHttpConnection(Classes::TComponent* AOwner)
: THttpConnection(AOwner)
{
try
{
PostedDataBuffer = NULL;
PostedDataSize = 0;
}
catch(...) {}
}
//--------------------------------------------------------------------------
-
__fastcall TMyHttpConnection::~TMyHttpConnection()
{
try
{
if (PostedDataBuffer != NULL)
{
if (MemoryManager->FreeMem(PostedDataBuffer) == 0)
{
PostedDataBuffer = NULL;
PostedDataSize = 0;
}
}
}
catch(...) {}
}
//--------------------------------------------------------------------------
-
//--------------------------------------------------------------------------
-
void __fastcall TAegisWebServerForm::HttpServerPostDocument(TObject *Sender,
TObject *Client, THttpGetFlag &Flags)
{
try
{
TMyHttpConnection* Connection = (TMyHttpConnection*)Client;
FCountRequests++; // Count request and display a message
if (CompareText(Connection->Path, "/content/home.html") == 0) // This
page is not cached
{
Flags = hgAcceptData;
Connection->LineMode = false;
if (Connection->PostedDataSize < Connection->RequestContentLength + 1)
{
if (Connection->PostedDataBuffer != NULL) {if
(MemoryManager->FreeMem(Connection->PostedDataBuffer) != 0) throw
Exception("Unable to free memory for Posted Data Buffer");}
Connection->PostedDataSize = 0;
Connection->PostedDataBuffer =
(char*)(MemoryManager->GetMem(Connection->RequestContentLength + 1));
if (Connection->PostedDataBuffer == NULL) throw Exception("Unable to
allocate memory for Posted Data Buffer");
Connection->PostedDataSize = Connection->RequestContentLength + 1;
}
Connection->RcvdByteCount = 0;
}
else Flags = hg404;
}
catch (Exception &E)
{HandleError("TAegisWebServerForm::HttpServerPostDocument", E.Message);}
catch (const exception &e)
{HandleError("TAegisWebServerForm::HttpServerPostDocument", e.what());}
catch (...) {HandleError("TAegisWebServerForm::HttpServerPostDocument",
"Unknown Exception");}
}
//--------------------------------------------------------------------------
-
void __fastcall TAegisWebServerForm::HttpServerPostedData(TObject *Sender,
TObject *Client, WORD Error)
{
try
{
int Len, Remains;
char Junk[1024];
TMyHttpConnection* Connection = (TMyHttpConnection*)Client;
Remains = Connection->RequestContentLength - Connection->RcvdByteCount;
if (Remains <= 0)
{
Connection->Receive(Junk, sizeof(Junk));
return;
}
Len =
Connection->Receive(&(Connection->PostedDataBuffer[Connection->RcvdByteCount
]), Remains);
if (Len <= 0) return;
Connection->RcvdByteCount += Len;
if (Connection->RcvdByteCount > Connection->RequestContentLength)
Connection->RcvdByteCount = Connection->RequestContentLength;
if (Connection->RcvdByteCount == Connection->RequestContentLength)
{
Connection->PostedDataReceived();
Connection->PostedDataBuffer[Connection->RcvdByteCount] = 0;
ProcessPostedData(Connection);
}
}
catch (Exception &E)
{HandleError("TAegisWebServerForm::HttpServerPostedData", E.Message);}
catch (const exception &e)
{HandleError("TAegisWebServerForm::HttpServerPostedData", e.what());}
catch (...) {HandleError("TAegisWebServerForm::HttpServerPostedData",
"Unknown Exception");}
}
//--------------------------------------------------------------------------
-
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be