Unable to connect via wifi if Proxy Auto-Config is set
- Dominant language
- Kotlin
- Stars
- 5.6k
- Forks
- 2k
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 92
Description
### Steps to reproduce
1. Configure a Wifi connection with a proxy set to "Proxy Auto-Config" and a custom proxy.pac/wpad.dat supplied (that works when using a web browser) via a http webserver, eg: http://wpadserver.example.com/wpad.dat
2. Connect via Wifi
3. Freshly install Nextcloud client
4. Try to connect to your nextcloud server
The client does not appear to be handling the "Proxy Auto-Config" android option correctly (Note the "OwnCloudClient: Proxy settings: localhost:-1" in the logs below.
Also see below for the wpad.dat I used while testing (super simple):
```
function FindProxyForURL(url, host) {
return "DIRECT";
}
```
Also note that all other network connections appeared to work with this wifi/proxy setup and I can access https://demo2.nextcloud.com from the same device in a web browser (firefox and the Lineage browser tested).
### Expected behaviour
- Be prompted for login credentials:)
### Actual behaviour
- Error "Could not find host"
### Can you reproduce this problem on https://try.nextcloud.com?
Yes (although it never connects). See below logs from logcat...
### Environment data
Android version: 9 (Lineage) also tested on 12 (Lineage) on different phone
Device model: OnePlus 5
Stock or customized system: Stock Lineage (not rooted)
Nextcloud app version: 3.20.1
### Logs
#### Nextcloud log (logcat)
```
05-30 01:34:28.754 5845 5883 D NetworkUtils: Searching known-servers store at /data/user/0/com.nextcloud.client/files/knownServers.bks
05-30 01:34:28.758 5845 5883 D OwnCloudClient #0: Creating OwnCloudClient
05-30 01:34:28.759 5845 5883 D OwnCloudClient: Proxy settings: localhost:-1
05-30 01:34:28.759 5845 5883 D AccountUtils: Restoring cookies for null
05-30 01:34:28.765 5845 5883 D OwnCloudClient #0: REQUEST GET /status.php
05-30 01:34:28.770 5845 5883 I HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 37683) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.770 5845 5883 I HttpMethodDirector: Retrying request
05-30 01:34:28.771 5845 5883 I HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 43900) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.771 5845 5883 I HttpMethodDirector: Retrying request
05-30 01:34:28.772 5845 5883 I HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 37720) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.772 5845 5883 I HttpMethodDirector: Retrying request
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: Connection check at https://demo2.nextcloud.com: Socket exception
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 45729) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.isConnected(IoBridge.java:278)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.connectErrno(IoBridge.java:187)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.connect(IoBridge.java:129)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at java.net.Socket.connect(Socket.java:621)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at java.lang.reflect.Method.invoke(Native Method)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:140)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:125)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.OwnCloudClient.executeMethod(OwnCloudClient.java:199)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.OwnCloudClient.executeMethod(OwnCloudClient.java:168)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.resources.status.GetStatusRemoteOperation.tryConnection(GetStatusRemoteOperation.java:89)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.resources.status.GetStatusRemoteOperation.run(GetStatusRemoteOperation.java:204)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:187)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.operations.GetServerInfoOperation.run(GetServerInfoOperation.java:80)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:187)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.services.OperationsService$ServiceHandler.nextOperation(OperationsService.java:440)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.services.OperationsService$ServiceHandler.handleMessage(OperationsService.java:405)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at android.os.Handler.dispatchMessage(Handler.java:106)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at android.os.Looper.loop(Looper.java:193)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at android.os.HandlerThread.run(HandlerThread.java:65)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.isConnected(IoBridge.java:267)
05-30 01:34:28.773 5845 5883 E GetStatusRemoteOperation: ... 29 more
05-30 01:34:28.773 5845 5883 D GetStatusRemoteOperation: establishing secure connection failed, trying non secure connection
05-30 01:34:28.774 5845 5883 D OwnCloudClient #0: REQUEST GET /status.php
05-30 01:34:28.775 5845 5883 I HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 48157) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.775 5845 5883 I HttpMethodDirector: Retrying request
05-30 01:34:28.775 5845 5883 I HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 43478) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.775 5845 5883 I HttpMethodDirector: Retrying request
05-30 01:34:28.776 5845 5883 I HttpMethodDirector: I/O exception (java.net.ConnectException) caught when processing request: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 48627) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.776 5845 5883 I HttpMethodDirector: Retrying request
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: Connection check at http://demo2.nextcloud.com: Socket exception
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 80) from /127.0.0.1 (port 43497) after 50000ms: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.isConnected(IoBridge.java:278)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.connectErrno(IoBridge.java:187)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.connect(IoBridge.java:129)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at java.net.Socket.connect(Socket.java:621)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at java.lang.reflect.Method.invoke(Native Method)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:140)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:125)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.OwnCloudClient.executeMethod(OwnCloudClient.java:199)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.OwnCloudClient.executeMethod(OwnCloudClient.java:168)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.resources.status.GetStatusRemoteOperation.tryConnection(GetStatusRemoteOperation.java:89)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.resources.status.GetStatusRemoteOperation.run(GetStatusRemoteOperation.java:208)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:187)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.operations.GetServerInfoOperation.run(GetServerInfoOperation.java:80)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:187)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.services.OperationsService$ServiceHandler.nextOperation(OperationsService.java:440)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at com.owncloud.android.services.OperationsService$ServiceHandler.handleMessage(OperationsService.java:405)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at android.os.Handler.dispatchMessage(Handler.java:106)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at android.os.Looper.loop(Looper.java:193)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at android.os.HandlerThread.run(HandlerThread.java:65)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: at libcore.io.IoBridge.isConnected(IoBridge.java:267)
05-30 01:34:28.777 5845 5883 E GetStatusRemoteOperation: ... 29 more
```
Contributor guide
Assessment
This issue has not been assessed yet.