Andrew Boyson / net

Dependents:   oldheating gps motorhome heating

Revision:
144:6bd5c54efc7d
Parent:
142:a8c0890a58d1
Child:
145:206bf0d073c7
--- a/tcp/tcprecv.c	Thu May 09 07:47:12 2019 +0000
+++ b/tcp/tcprecv.c	Sun May 12 17:17:49 2019 +0000
@@ -43,9 +43,8 @@
     pTcb->countSendsNotAcked  = 0;
     pTcb->rcvdFin             = false;
     pTcb->sentFin             = false;
-    pTcb->todo                = 0;
-    pTcb->postComplete        = false;
-    pTcb->delayUntil          = MsTimerCount;
+    pTcb->appStarted          = false;
+    for (char* p = pTcb->appData; p < pTcb->appData + TCB_APP_STATE_BYTES; p++) *p = 0;
     pTcb->remIsn              = TcpHdrSeqNum;
     pTcb->locIsn              = TcbGetIsn();
     pTcb->bytesRcvdFromRem    = 0;
@@ -60,10 +59,10 @@
     switch (pTcb->locPort)
     {
         case 80:
-            HttpHandleRequest(dataLength, pData, position, &pTcb->todo, &pTcb->postComplete, &pTcb->delayUntil);
+            HttpHandleRequest (dataLength, pData, position, pTcb->appData);
             break;
         case 443:
-            HttpsHandleRequest(dataLength, pData, position, &pTcb->todo);
+            HttpsHandleRequest(dataLength, pData, position, pTcb->appData);
             break;
         default:
             break;
@@ -97,9 +96,8 @@
     pTcb->countSendsNotAcked  = 0;
     pTcb->rcvdFin             = false;
     pTcb->sentFin             = false;
-    pTcb->todo                = 0;
-    pTcb->postComplete        = false;
-    pTcb->delayUntil          = MsTimerCount;
+    pTcb->appStarted          = false;
+    for (char* p = pTcb->appData; p < pTcb->appData + TCB_APP_STATE_BYTES; p++) *p = 0;
     pTcb->remIsn              = TcpHdrSeqNum + seqLengthRcvd; //Ack number
     pTcb->locIsn              = TcpHdrACK ? TcpHdrAckNum : 0; //Seq number
     pTcb->bytesRcvdFromRem    = 0;
@@ -294,7 +292,11 @@
             break;
             
         case TCB_ESTABLISHED:
-            if (dataLength) handleReceivedData (pPacketRx, dataLength, seqRcvdFromRem - 1, pTcb);
+            if (dataLength)
+            {
+                handleReceivedData(pPacketRx, dataLength, seqRcvdFromRem - 1, pTcb);
+                pTcb->appStarted = true;
+            }
             if (pTcb->sentFin)
             {
                 pTcb->state = pTcb->rcvdFin ? TCB_EMPTY : TCB_CLOSE_FIN_WAIT;