diff --git a/components/lwip/port/esp32/vfs_lwip.c b/components/lwip/port/esp32/vfs_lwip.c index 9704308e2e..517838e30e 100644 --- a/components/lwip/port/esp32/vfs_lwip.c +++ b/components/lwip/port/esp32/vfs_lwip.c @@ -70,13 +70,25 @@ static int lwip_ioctl_r_wrapper(int fd, int cmd, va_list args) return lwip_ioctl(fd, cmd, va_arg(args, void *)); } +static int lwip_fstat(int fd, struct stat * st) +{ + if (st == NULL || fd < LWIP_SOCKET_OFFSET || fd > (MAX_FDS - 1)) { + errno = EBADF; + return -1; + } + memset(st, 0, sizeof(*st)); + /* set the stat mode to socket type */ + st->st_mode = S_IFSOCK; + return 0; +} + void esp_vfs_lwip_sockets_register(void) { esp_vfs_t vfs = { .flags = ESP_VFS_FLAG_DEFAULT, .write = &lwip_write, .open = NULL, - .fstat = NULL, + .fstat = &lwip_fstat, .close = &lwip_close, .read = &lwip_read, .fcntl = &lwip_fcntl_r_wrapper,