micropython/extmod
Daniël van de Giessen 8c47ff7153 esp32/network_ppp: Correctly clean up PPP PCB after close.
If PPP is still connected, freeing the PCB will fail and thus instead we
should trigger a disconnect and wait for the lwIP callback to actually
free the PCB.

When PPP is not connected we should check if the freeing failed, warn
the user if so, and only mark the connection as inactive if not.

When all this happens during garbage collection the best case is that
the PPP connection is already dead, which means the callback will be
called immediately and cleanup will happen correctly. The worst case is
that the connection is still alive, thus we are unable to free the PCB
(lwIP won't let us) and it remains referenced in the netif_list, meaning
a use-after-free happens later when lwIP traverses that linked list.

This change does not fully prevent that, but it *does* improve how the
PPP.active(False) method on the ESP32 port behaves: It no longer
immediately tries to free (and fails), but instead triggers a disconnect
and lets the cleanup happen correctly through the status callback.

Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
2025-08-11 12:38:37 +10:00
..
asyncio extmod/asyncio: Fix early exit of asyncio scheduler. 2025-05-07 14:56:47 +10:00
axtls-include all: Prune trailing whitespace. 2024-03-07 16:25:17 +11:00
berkeley-db all: Update extmod, ports, examples to build with new berkeley-db lib. 2024-03-16 12:19:12 +11:00
btstack extmod/modbluetooth: Add timeout to deinit. 2025-06-04 02:21:32 +10:00
libmetal extmod/libmetal: Fix libmetal rules for mkdir dependencies. 2024-09-06 17:14:03 +10:00
littlefs-include lib/littlefs: Reuse existing CRC32 function to save space. 2025-05-07 17:03:28 +10:00
lwip-include extmod/network_lwip: Add sys_untimeout_all_with_arg helper function. 2025-07-17 13:38:58 +10:00
mbedtls extmod/mbedtls: Undefine ARRAY_SIZE if defined by platform. 2025-07-23 15:47:17 +10:00
nimble extmod/modbluetooth: Add timeout to deinit. 2025-06-04 02:21:32 +10:00
cyw43_config_common.h rp2,extmod/cyw43: Move the LWIP responder fix into common CYW43 config. 2025-05-08 15:32:05 +10:00
extmod.cmake extmod/machine_i2c_target: Add new machine.I2CTarget class. 2025-08-01 23:03:17 +10:00
extmod.mk extmod/machine_i2c_target: Add new machine.I2CTarget class. 2025-08-01 23:03:17 +10:00
font_petme128_8x8.h extmod: Move font_petme128_8x8.h from ports/stm32 to extmod. 2022-05-05 13:30:40 +10:00
machine_adc_block.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_adc.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_bitstream.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_i2c_target.c extmod/machine_i2c_target: Add new machine.I2CTarget class. 2025-08-01 23:03:17 +10:00
machine_i2c.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_i2s.c esp32/machine_i2s: Integrate new I2S IDF driver. 2024-03-08 13:31:02 +11:00
machine_mem.c extmod/modmachine: Add MICROPY_PY_MACHINE_MEMX configuration option. 2024-03-15 12:04:34 +11:00
machine_pinbase.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_pulse.c esp8266/modmachine: Use common machine_time_pulse_us implementation. 2025-06-13 16:27:35 +10:00
machine_pwm.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_signal.c extmod/modmachine: Add MICROPY_PY_MACHINE_SIGNAL configuration option. 2024-03-15 12:04:25 +11:00
machine_spi.c extmod/machine_spi: Support firstbit=LSB for machine.SoftSPI. 2024-07-12 22:59:31 +10:00
machine_timer.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_uart.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_usb_device.c extmod/machine_usb_device: Add exception text wrappers. 2025-04-22 11:29:32 +10:00
machine_wdt.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
misc.h extmod/os_dupterm: Let mp_os_dupterm_tx_strn() return num bytes written. 2023-12-22 10:26:52 +11:00
modasyncio.c extmod/modasyncio: Add support for a callback on TaskQueue push. 2024-06-20 00:11:05 +10:00
modbinascii.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modbluetooth.c extmod/modbluetooth: Add timeout to deinit. 2025-06-04 02:21:32 +10:00
modbluetooth.h extmod/modbluetooth: Add timeout to deinit. 2025-06-04 02:21:32 +10:00
modbtree.c extmod/modbtree: Add checks for already-closed database. 2024-07-22 10:42:29 +10:00
modcryptolib.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
moddeflate.c extmod/moddeflate: Keep DeflateIO state consistent on window alloc fail. 2025-03-27 11:58:59 +11:00
modframebuf.c extmod/modframebuf: Add support for blit'ing read-only data. 2025-06-04 02:40:45 +10:00
modhashlib.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modheapq.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modjson.c extmod/modjson: Detect unterminated composite entities. 2025-05-19 02:09:40 +02:00
modlwip.c extmod/modlwip: Print timeout with correct format string. 2025-07-25 10:59:51 +10:00
modmachine.c extmod/machine_i2c_target: Add new machine.I2CTarget class. 2025-08-01 23:03:17 +10:00
modmachine.h extmod/machine_i2c_target: Add new machine.I2CTarget class. 2025-08-01 23:03:17 +10:00
modmarshal.c extmod/modmarshal: Add new marshal module. 2025-02-11 16:54:20 +11:00
modnetwork.c extmod/modnetwork: Consolidate definition of common drivers. 2025-06-10 11:20:38 +10:00
modnetwork.h extmod/network_lwip: Add sys_untimeout_all_with_arg helper function. 2025-07-17 13:38:58 +10:00
modonewire.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modopenamp_remoteproc_store.c extmod/modopenamp: Add support for building Open-AMP on device side. 2024-08-08 17:59:32 +10:00
modopenamp_remoteproc.c extmod/modopenamp: Add support for building Open-AMP on device side. 2024-08-08 17:59:32 +10:00
modopenamp_remoteproc.h extmod/modopenamp_remoteproc: Add new OpenAMP RemoteProc class. 2024-03-15 18:11:28 +11:00
modopenamp.c extmod/modopenamp: Use mp_event_* functions for poll/wait. 2024-08-08 18:02:21 +10:00
modopenamp.h extmod/modopenamp_remoteproc: Add new OpenAMP RemoteProc class. 2024-03-15 18:11:28 +11:00
modos.c extmod/vfs: Guard mutating fs functions with MICROPY_VFS_WRITABLE. 2024-12-20 21:58:50 +11:00
modplatform.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modplatform.h extmod/modplatform: Distinguish RISC-V 64 from RISC-V 32. 2024-12-10 12:10:36 +11:00
modrandom.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modre.c extmod/modre: Use specific error message if regex is too complex. 2025-06-10 15:14:56 +10:00
modselect.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modsocket.c extmod/modsocket: Add missing static in private function definitions. 2025-01-02 13:33:39 +11:00
modtime.c shared/timeutils: Standardize supported date range on all platforms. 2025-07-09 11:54:21 +10:00
modtime.h all: Rename *umodule*.h to remove the "u" prefix. 2023-06-08 17:54:14 +10:00
modtls_axtls.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
modtls_mbedtls.c extmod/modtls_mbedtls: Do gc_collect and retry ssl_init on any error. 2025-07-31 10:46:47 +10:00
moductypes.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
modvfs.c extmod/modvfs: Add vfs.rom_ioctl function and its ioctl constants. 2025-03-06 12:52:35 +11:00
modwebrepl.c all: Use new mp_obj_new_str_from_cstr() function. 2024-07-04 15:55:03 +10:00
modwebsocket.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modwebsocket.h all: Rename *umodule*.h to remove the "u" prefix. 2023-06-08 17:54:14 +10:00
mpbthci.c extmod/modbluetooth: Refactor stack/hci/driver/port bindings. 2020-09-08 11:41:31 +10:00
mpbthci.h extmod,alif,mimxrt,rp2,stm32: Create common cyw43 driver config header. 2025-05-08 15:32:05 +10:00
network_cyw43.c extmod/network_cyw43: Disconnect STA if making inactive. 2025-05-20 23:14:41 +10:00
network_cyw43.h extmod: Add network-level class binding to cyw43 driver. 2019-06-03 16:47:35 +10:00
network_esp_hosted.c extmod/modnetwork: Consolidate definition of common drivers. 2025-06-10 11:20:38 +10:00
network_lwip.c extmod/network_lwip: Add sys_untimeout_all_with_arg helper function. 2025-07-17 13:38:58 +10:00
network_ninaw10.c extmod/network_nina: Fix the AP security mode constants. 2024-07-12 01:03:46 +10:00
network_ppp_lwip.c esp32/network_ppp: Correctly clean up PPP PCB after close. 2025-08-11 12:38:37 +10:00
network_wiznet5k.c extmod/modnetwork: Consolidate definition of common drivers. 2025-06-10 11:20:38 +10:00
os_dupterm.c extmod/os_dupterm: Handle exception properly when it occurs in parallel. 2024-03-16 10:59:03 +11:00
vfs_blockdev.c extmod/vfs_blockdev: Support bool return from Python read/write blocks. 2024-11-13 14:21:29 +11:00
vfs_fat_diskio.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
vfs_fat_file.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
vfs_fat.c shared/timeutils: Standardize supported date range on all platforms. 2025-07-09 11:54:21 +10:00
vfs_fat.h extmod: Factor out block-device struct to make independent of fatfs. 2019-10-29 12:12:37 +11:00
vfs_lfs.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
vfs_lfs.h extmod: Add VFS littlefs bindings. 2019-10-29 14:17:29 +11:00
vfs_lfsx_file.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
vfs_lfsx.c extmod/vfs_lfsx: Allow overriding the LFS2 on-disk version format. 2025-07-23 15:51:08 +10:00
vfs_posix_file.c extmod/vfs_posix_file: Skip flush of tty handles in msvc debug builds. 2024-10-09 15:03:07 +11:00
vfs_posix.c extmod/vfs_posix: Add MICROPY_VFS_POSIX_WRITABLE option. 2025-07-24 10:39:41 +10:00
vfs_posix.h extmod/vfs: Introduce a C-level VFS protocol, with fast import_stat. 2018-06-06 14:33:42 +10:00
vfs_reader.c extmod/vfs_reader: Add support for opening a memory-mappable file. 2024-12-23 13:04:54 +11:00
vfs_rom_file.c extmod/vfs_rom: Add VfsRom filesystem object. 2024-12-23 13:04:54 +11:00
vfs_rom.c extmod/vfs_rom: Implement minimal VfsRom.getcwd() method. 2025-03-27 17:04:12 +11:00
vfs_rom.h extmod/vfs_rom: Add VfsRom filesystem object. 2024-12-23 13:04:54 +11:00
vfs.c extmod/vfs: Return mount table from no-args vfs.mount call. 2025-03-27 16:37:04 +11:00
vfs.h extmod/vfs: Add mp_vfs_mount_romfs_protected() helper. 2025-03-06 12:52:35 +11:00
virtpin.c py/obj: Add accessors for type slots and use everywhere. 2022-09-19 19:06:07 +10:00
virtpin.h all: Unify header guard usage. 2017-07-18 11:57:39 +10:00