A stack which works with or without an Mbed os library. Provides IPv4 or IPv6 with a full 1500 byte buffer.
Dependents: oldheating gps motorhome heating
Diff: tcp/tcprecv.c
- Revision:
- 97:d91f7db00235
- Parent:
- 96:43eb7a110f1a
- Child:
- 98:b977424ec7f7
diff -r 43eb7a110f1a -r d91f7db00235 tcp/tcprecv.c --- a/tcp/tcprecv.c Sat Dec 29 19:03:50 2018 +0000 +++ b/tcp/tcprecv.c Wed Jan 02 17:48:38 2019 +0000 @@ -14,6 +14,7 @@ #include "http.h" #include "led.h" #include "mstimer.h" +#include "fault.h" static void log(void (*traceback)(void), char* fmt, ...) { @@ -103,6 +104,8 @@ int TcpHandleReceivedPacket(void (*traceback)(void), int sizeRx, void* pPacketRx, int* pSizeTx, void* pPacketTx, int ipType, int remArIndex, int locIpScope) { + FaultPoint = FAULT_POINT_TcpHandleReceivedPacket; + int action = DO_NOTHING; bool traceRequested = false; @@ -111,6 +114,7 @@ if (remArIndex < 0) { log(traceback, "invalid remote AR index %d -> ignored packet", remArIndex); + FaultPoint = 0; return DO_NOTHING; } @@ -138,6 +142,7 @@ default: //Send reset if unknown port log(traceback, "unhandled local port %hu -> sent reset", TcpHdrDstPort); action = sendResetFromPacket(pSizeTx, pPacketTx, ipType, remArIndex, locIpScope, seqLengthRcvd); + FaultPoint = 0; return action; } @@ -148,6 +153,7 @@ { log(traceback, "no more tcbs available -> sent reset"); action = sendResetFromPacket(pSizeTx, pPacketTx, ipType, remArIndex, locIpScope, seqLengthRcvd); + FaultPoint = 0; return action; } pTcb->timeLastRcvd = MsTimerCount; @@ -166,6 +172,7 @@ log(traceback, "received reset -> reaped TCB"); pTcb->state = TCB_EMPTY; } + FaultPoint = 0; return DO_NOTHING; //Don't reply } @@ -177,6 +184,7 @@ log(traceback, "received a SYN on an open connection -> sent reset"); pTcb->state = TCB_EMPTY; action = TcpSendReset(pSizeTx, pPacketTx, pTcb); + FaultPoint = 0; return action; } else @@ -192,6 +200,7 @@ log(traceback, "non SYN packet received on a closed connection -> sent reset"); pTcb->state = TCB_EMPTY; action = sendResetFromPacket(pSizeTx, pPacketTx, ipType, remArIndex, locIpScope, seqLengthRcvd); + FaultPoint = 0; return action; } @@ -221,6 +230,7 @@ log(traceback, "seq rcvd is %d and last seq ackd was %d -> resent last ACK", seqRcvdFromRem, pTcb->bytesAckdToRem); } action = TcpResendLastAck(pSizeTx, pPacketTx, pTcb); + FaultPoint = 0; return action; } //Ignore data before established @@ -229,6 +239,7 @@ log(traceback, "data received before connection established -> sent reset"); pTcb->state = TCB_EMPTY; action = TcpSendReset(pSizeTx, pPacketTx, pTcb); + FaultPoint = 0; return action; } @@ -270,5 +281,6 @@ action = TcpSend(pSizeTx, pPacketTx, pTcb); + FaultPoint = 0; return action; }