Skip to content

Crash When remote server goes down #53

@eroom1966

Description

@eroom1966

I have a strange scenario.
I am connected to a server/endpoint and all is working as expected.
The server/endpoint then goes down, and I stop receiving traffic.

I then call esp_wireguardif_peer_is_up() to see if it is still available, but this causes a crash
The crash is due to the following assert failing

esp_wireguardif_peer_is_up() -> wireguardif_peer_is_up()
wireguardif_peer_is_up() -> wireguardif_lookup_peer()

This assert fails due to netif being NULL

static err_t wireguardif_lookup_peer(struct netif *netif, u8_t peer_index, struct wireguard_peer **out) {
	LWIP_ASSERT("netif != NULL", (netif != NULL));

I put a simple fix into this function, to check that ctx->netif is non NULL

esp_err_t esp_wireguardif_peer_is_up(wireguard_ctx_t *ctx)
{
...
    if (!ctx->netif) {
        err = ESP_ERR_INVALID_ARG;
        goto fail;
    }

I don't understand enough about this code, but this solves my problem, what I do not understand is why is ctx->netif==NULL ?
All I do to get to this state, is to take down the remote wireguard after connection has been established

Thx
Lee

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions