Skip to content
This repository was archived by the owner on Feb 4, 2023. It is now read-only.
This repository was archived by the owner on Feb 4, 2023. It is now read-only.

WiFiManager works only on port 80 #75

Closed
@deanjott

Description

@deanjott

Symptom:
Taking for example the code in Async_ConfigOnSwitch.ino you will find
#define HTTP_PORT 80
If any port other than 80 is used, the captive portal fails to connect.

Reproduce:
Using the example code, change HTTP_PORT to 81, Activate the captive port by pressing the button. Attempt to connect to http://192.168.4.1:81

Cause:
The code in ESPAsync_WiFiManager-Impl.h has a method "bool ESPAsync_WiFiManager::isIp(String str)" which is called from "bool ESPAsync_WiFiManager::captivePortal(AsyncWebServerRequest *request)" The "isIp" method parses the URL and if anything other than numbers and '.' character are found then the rewrite rule in "captivePortal" will be executed to redirect the request to the captive portal IP address but without the port number because "isIp" returns false while parsing something like "http://192.168.4.1:8080" due to the ':' character.

Suggested Remedy:
The "isIp" method should be adjusted as follows:
Old: if (c != '.' && (c < '0' || c > '9'))
New: if (c != '.' && c != ':' && (c < '0' || c > '9'))

The suggested remedy was tested locally and found to correct the issue.

This issue would exist regardless of platform or version however for the sake of including the required info:
Arduino IDE 1.8.15
ESP32 Core Version ??
OS: Windows 7 Ultimate 64 bit

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