Your comments
Do you have a screenshot or screen recording video so I can see the problem?
I'm especially interested in your keyboard configuration, because I don't see such an issue on my devices.
(You are responding to an 11 year old topic, so I doubt that this is the same issue.)
Great! Feel free to remove the test account. Thanks again!
I've prepared a TestFlight build that should fix the problems with uploading to cPanel WebDAV servers and also uses "Expect: 100-continue" to prevent duplicate uploads.
I've sent you a TestFlight invitation.
Please try this version and let me know if it works for you as expected.
Would you be interested in trying a TestFlight version that includes the fix? I could prepare a TestFlight build tomorrow.
Also, I'm just reading up about the HTTP "Expect: 100-continue" header I could send which has the potential to eliminate the duplicate upload I mentioned earlier. If you could keep the test account running a little longer, I could also test this tomorrow.
Hi Jaehyun,
thanks again for the detailed report and for the test account. I could take a detailed look at the network traffic and found a workaround.
What’s going on
Typical WebDAV servers (Apache mod_dav, Nextcloud/SabreDAV, nginx-dav, Microsoft IIS WebDAV, and so on) keep the same TCP connection open (keep-alive): once you’ve connected to the server, all subsequent requests go through that same connection without having to authenticate again.
cPanel’s Web Disk daemon, cpdavd, on the other hand always adds "Connection: close" and shuts the socket down after every response. (It looks like this is a quirk of cpdavd and that behavior cannot be changed.)
Because of that, Textastic has to open a totally new connection for the next upload. On this fresh connection, iOS hasn’t sent the user name and password yet, so the server rejects the first attempt (returning "401 Unauthorized") and Textastic has to start the upload a second time.
Because Textastic didn’t hand iOS a fresh copy of the upload stream for that retry, the transfer aborted with "request body stream exhausted".
What’s changing
The next Textastic update hands iOS a new stream whenever cpdavd forces that retry. The upload now succeeds – although, due to the server’s behaviour, the file still travels over the wire twice on cPanel Web Disk servers.
For typical source-code-sized files the overhead is negligible, but the error message is gone and the upload completes.
Thanks for helping me track this down! If you run into anything else, just let me know.
Sure, I'll let you know. Is it ok if you keep the account active for a few days? Not sure if I have time to work on it on the weekend.
Thank you! I received the email with the test account credentials. I could login and can reproduce the error.
I'll try to find out what's going on. I'll get back to you when I know more.
A test account would be great.
Update: I have tried to reproduce the problem by uploading a file to my Synology Diskstation's WebDAV server and uploading an existing file worked without problems, so it may be a problem specific to your WebDAV server software.
Customer support service by UserEcho
Thanks a lot for the videos, that's very helpful.
So the problem is that when you tap a line on the screen and the on-screen keyboard is shown, the text editor doesn't scroll up and the line you tapped is hidden by the keyboard.
You are right, this is annoying.
I'll try to improve it so the location you tapped is scrolled into view when the keyboard is shown.