# Google SoC lwIP Report Week 5

DevFeed: [Google SoC lwIP Report Week 5](<https://devfeed.tech/articles/google-soc-lwip-report-week-5-32791.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/google-soc-lwip-report-week-5/>)

Published: 2016-06-26T00:00:00Z

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [lwIP](<https://devfeed.tech/topics/lwip.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Google](<https://devfeed.tech/topics/google.md>), [SOC](<https://devfeed.tech/topics/soc.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [free](<https://devfeed.tech/tags/free.md>), [google](<https://devfeed.tech/tags/google.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [lwip](<https://devfeed.tech/tags/lwip.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [soc](<https://devfeed.tech/tags/soc.md>), [tcp](<https://devfeed.tech/tags/tcp.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>), [windows](<https://devfeed.tech/tags/windows.md>)

## AI overview

A week-five Google SoC progress report on an lwIP-based Windows driver describes incorrect TDI_SEND and TDI_RECEIVE IRQ handlers, lost IRP pointers, memory leaks, hanging IRQs, and ongoing redesign using state variables and a state diagram.

## Source excerpt

Going into week 5, I started with a code-complete but very much incorrect implementation of the TDI_SEND and TDI_RECEIVE IRQ handlers. My TCP_CONTEXT data structure and the existing ADDRESS_FILE data structure both did not contain a way to keep track of pending IRQs, so I had no way of keeping track of outstanding pending IRQs and what connection contexts they were supposed to be associated with. Without a clear scheme for keeping track of the information, IRP pointers invariably got lost.