MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / tcpReceive

Function tcpReceive

modules/io/socket/lwip/tcp.c:541–586  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

539}
540
541err_t tcpReceive(void *arg, struct tcp_pcb *pcb, struct pbuf *pb, err_t err)
542{
543 TCP tcp = arg;
544 TCPBuffer buffer;
545
546 if ((NULL == pb) || (ERR_OK != err)) { //@@ when is err set here?
547 removeTCPCallbacks(tcp);
548#if ESP32
549//@@ tcp->skt = NULL; // no close on socket if disconnected.
550#endif
551 tcpTrigger(tcp, kTCPError);
552 return ERR_OK;
553 }
554
555#ifdef mxDebug
556 if (pb && fxInNetworkDebugLoop(tcp->the))
557 return ERR_MEM;
558#endif
559
560 buffer = c_malloc(sizeof(TCPBufferRecord));
561 if (!buffer)
562 return ERR_MEM; // retry later
563
564 buffer->next = NULL;
565 buffer->pb = pb;
566 buffer->bytes = pb->tot_len;
567 buffer->fragment = pb;
568 buffer->fragmentOffset = 0;
569
570 modInstrumentationAdjust(NetworkBytesRead, buffer->bytes);
571
572 if (tcp->buffers) {
573 TCPBuffer walker;
574
575 for (walker = tcp->buffers; walker->next; walker = walker->next)
576 ;
577 walker->next = buffer;
578 }
579 else
580 tcp->buffers = buffer;
581
582 if (tcp->triggerable & kTCPReadable)
583 tcpTrigger(tcp, kTCPReadable);
584
585 return ERR_OK;
586}
587
588err_t tcpSent(void *arg, struct tcp_pcb *pcb, u16_t len)
589{

Callers

nothing calls this directly

Calls 3

removeTCPCallbacksFunction · 0.70
tcpTriggerFunction · 0.70
fxInNetworkDebugLoopFunction · 0.50

Tested by

no test coverage detected