[BUG] Android owncloud client not uploading without internet access
Actual behaviour
Mine internal owncloud server behind firewall and proxy is working well with Windows owncloud client and with linux clients My android device on WIFI without internet connection can download items from my owncloud server, but cannot upload. Everything selected to upload is still with status "enqueued"
Expected behaviour
upload & download should be without issues
Steps to reproduce
- internal owncloud server
- wifi without internet access
- try to upload something and check upload tab where you will see files as "enqueued"
Can this problem be reproduced with the official owncloud server? (url: https://ocis.ocis.master.owncloud.works, user: einstein, password: relativity) no
Environment data
Android version: 14 Tested
Device model: Samsung galaxy s23+ tested on galaxy tabs7 as well same issue tested on older android devices = same issue
Stock or customized system: stock
ownCloud app version: 4.4.1 tested also 4.3.0
ownCloud server version: 10.15.0
Logs
Web server error log
no relevant logs just that device is connecting I add sucesfully connection and all seems to be ok, just upload enqueued
ownCloud log (data/owncloud.log)
no relevant data
Insert your ownCloud log here data from owncloud client log
loading file to dir /test1/ D: 2024-11-11 06:56:09:354(BaseActivity.java:292)show loading dialog I: 2024-11-11 06:56:09:383(UploadFilesFromSystemUseCase.kt:94)Upload of /test1/owncloud.2024-11-11_06.55.39.log has been stored in the uploads database with id: 166 I: 2024-11-11 06:56:09:383(UploadFileFromSystemUseCase.kt:76)Plain upload of /data/user/0/com.owncloud.android/files/owncloud/tmp/[email protected]%2Fowncloud/test1/owncloud.2024-11-11_06.55.39.log has been enqueued. D: 2024-11-11 06:56:09:389(BaseActivity.java:310)dismiss loading dialog V: 2024-11-11 06:56:09:408(MainApp.kt:212)ReceiveExternalFilesActivity onPause() ending V: 2024-11-11 06:56:09:416(MainApp.kt:201)LogsListActivity onStart() starting V: 2024-11-11 06:56:09:417(MainApp.kt:208)LogsListActivity onResume() starting V: 2024-11-11 06:56:09:805(MainApp.kt:216)ReceiveExternalFilesActivity onStop() ending V: 2024-11-11 06:56:09:810(MainApp.kt:227)ReceiveExternalFilesActivity onDestroy() ending V: 2024-11-11 06:56:13:657(MainApp.kt:212)LogsListActivity onPause() ending V: 2024-11-11 06:56:13:667(MainApp.kt:201)SettingsActivity onStart() starting V: 2024-11-11 06:56:13:668(MainApp.kt:208)SettingsActivity onResume() starting V: 2024-11-11 06:56:14:054(MainApp.kt:216)LogsListActivity onStop() ending V: 2024-11-11 06:56:14:055(MainApp.kt:227)LogsListActivity onDestroy() ending V: 2024-11-11 06:56:17:074(MainApp.kt:212)SettingsActivity onPause() ending V: 2024-11-11 06:56:17:081(BaseActivity.java:93)onRestart() start V: 2024-11-11 06:56:17:082(BaseActivity.java:99)onRestart() end V: 2024-11-11 06:56:17:082(MainApp.kt:201)UploadListActivity onStart() starting D: 2024-11-11 06:56:17:084(BaseActivity.java:177)Account set: [email protected]/owncloud D: 2024-11-11 06:56:17:085(DrawerActivity.kt:304)Update Quota I: 2024-11-11 06:56:17:086(AvatarManager.kt:87)Avatar with imageKey [email protected]/owncloud is not available in cache. Generating one... V: 2024-11-11 06:56:17:088(MainApp.kt:208)UploadListActivity onResume() starting W: 2024-11-11 06:56:17:088(DrawerActivity.kt:402)setDrawerMenuItemChecked has been called with invalid menu-item-ID
My test: old oCloud.de app = working different devices same or older app version = not working open firewall for my android device to internet = immediately upload working after we close that access to internet again same issue
thank you for any help
open firewall for my android device to internet = immediately upload working
that means that the problem is in the firewall. Did you check the rules' list?
Usually, when uploads are just enqueued (no error), is because the device does not find connectivity to launch them.
firewall is not between server and client. It is between internet and our networks. As I wrote, oCloud.de is working normally also without internet access
If the status is Enqueued and not Error is because the device connectivity. Enqueued means "ready to go but waiting for connection".
If you are sure that your device has connectivity, it's something that i can not explain at this point :D. Download and upload are operations that use the same piece of software to run.
Please, could you share an app log with the Log HTTP request and responses enabled? we can provide you a link to upload to.
just to be clear and aligned, when you mentioned "internet access", you meant "mobile connectivity"(4G/5G...) right? internet access is network reachability, regardless the kind of interface you use for (WiFi is also internet connection). It is not posible to work in cloud without an network access.
App connectivity will work if ownCloud app and server are reachable themselves. ownCloud app does not handle network rules or middleware. The connectivity must be direct.
"Internet access" I mean any connection to internet, no mobile connectivity (4G/5G...) and wifi without connection to internet My owncloud server is on-premise, it is working correctly from any Windows PC or PC with linux in our internal network (via app also via browser)
From my android device connected to WIFI without connection to internet (no 4G no 5G ... WIFI without internet)
- I am able to add my server connection in Owncloud application
- set username + password and make successful connection via Owncloud app
- I am able to download anything via Owncloud app
- but not possible to UPLOAD via Owncloud app
- I am able to open server URL via browser and successful login
- via browser I am able to download and also I am able to upload
- via oCloud.de app (last update of app was in 2018) I able to do both upload & download
Where I should past logs ? here ? it is 77 lines
thank you
Where I should past logs ? here ? it is 77 lines
if there is no sensible information about your server (domain names, IPs, relevant user names or user info...) you can post here. If not, please push here: https://infinite.owncloud.com/s/HRHrEelQxgSTvJO
with pass: qb26Y},E<}#q
no one else will read it.
android owncloud app client logs :
D: 2024-11-11 12:23:50:667(SingleSessionManager.java:98)getClientFor starting
V: 2024-11-11 12:23:50:667(SingleSessionManager.java:125)reusing client for account [email protected]/owncloud
D: 2024-11-11 12:23:50:668(SingleSessionManager.java:180)getClientFor finishing
D: 2024-11-11 12:23:50:668(OwnCloudClient.java:129)Executing in request with id bbd30aa3-6e0d-4d84-9e10-f0a197f81aee
D: 2024-11-11 12:23:50:698(LogInterceptor.kt:67)REQUEST bbd30aa3-6e0d-4d84-9e10-f0a197f81aee {"request":{"body":"<propfind xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav" xmlns:SABRE="http://sabredav.org/ns" xmlns:OC="http://owncloud.org/ns">
thanks. we can see that there are plenty of server requests that are responded, but just a
I: 2024-11-11 12:23:55:657(UploadFileFromSystemUseCase.kt:76)Plain upload of /data/user/0/com.owncloud.android/files/owncloud/tmp/[email protected]%2Fowncloud/list_vlastnictva (11).pdf has been enqueued.
to enqueue the file that (i guess) you selected manually from your file system. My guess is again something related with the firewall, no matter what other clients does (maybe different implementations). The other suspiction is something related with network library. Needed more info here.
yes I am testing manual upload
between my android device and my owncloud server there is "full IP access" (no restriction ) only connection to "outside" "to the world" is blocked
what else should I provide ?
thank you
@JuancaG05 @joragua more ideas?
if apps connects directly with server, there should be no problem.
I can see in UploadFileFromContentUriUseCase that the worker has a constraint by default NetworkType.CONNECTED (NetworkType.UNMETERED when the "Only by WiFi" setting is enabled), that the download worker doesn't have. This could mean that the Android system doesn't recognize that there is an available connection when you're connected to your LAN and this constraint is not fulfilled, so the worker is enqueued until this condition is fulfilled. But this same constraint is set in the account discovery worker and as you mentioned, that seems to work, right? @Luiginoo007
There is also one more place apart from uploads where this constraint is used, and it's for the available offline worker. Could you test and confirm if account discovery (the process made just after logging in where capabilities, spaces, root folder, etc are discovered) and available offline downloads (downloads made automatically after 15 minutes when you make a change in a file in the server side) are working? That way we discard causes or we scope the problem 😃 thank you!
Got the same issue! Basic setup: I'm hosting using my desktop. I'm able to upload via 'localhost' on my desktop webpage. I'm able to download and upload from my android webpage. I'm able to download via my android phone app, but all upload were shown as enqueued. I changed the network to unmetered, still unable to upload.
BUT, after some minutes, my phone detected that there is no network through the wifi, it tried to switch to my mobile data, and I then tried to switch back to wifi.
Just when I was switching back and forth, the upload successed! And then everything failed again to stall in enqueued
I've experienced this as well and it's annoying. It only happens when the phone cannot detect a working "internet connection" and has nothing to do with the phone being able to connect to the internal owncloud server (192.168.x.x for example)
Disabling connectivity checks helps, but not every Android ROM has this toggle in their internet settings.
Something like: adb shell settings put global captive_portal_mode 0 should do the trick.
0 = Disable connectivity checks
1 = Enable connectivity checks
Hi @Z-Y00 and @Ke1i, check my previous comment:
I can see in
UploadFileFromContentUriUseCasethat the worker has a constraint by defaultNetworkType.CONNECTED(NetworkType.UNMETEREDwhen the "Only by WiFi" setting is enabled), that the download worker doesn't have. This could mean that the Android system doesn't recognize that there is an available connection when you're connected to your LAN and this constraint is not fulfilled, so the worker is enqueued until this condition is fulfilled. But this same constraint is set in the account discovery worker and as you mentioned, that seems to work, right? @Luiginoo007There is also one more place apart from uploads where this constraint is used, and it's for the available offline worker. Could you test and confirm if account discovery (the process made just after logging in where capabilities, spaces, root folder, etc are discovered) and available offline downloads (downloads made automatically after 15 minutes when you make a change in a file in the server side) are working? That way we discard causes or we scope the problem 😃 thank you!
If you checked those actions with your server, we could research about it more easily 🙂, thanks!