Cyberduck Mountain Duck CLI

#6767 closed defect (worksforme)

Interoperability with nginx

Reported by: nelson Owned by: dkocher
Priority: normal Milestone: 4.3
Component: webdav Version: 4.2.1
Severity: normal Keywords: webdav ssl
Cc: Architecture: Intel
Platform: Windows XP

Description

Hi, I have an nginx web server to host my webpages, nginx has webdav built-in support so I configured it to upload my www content to my site through webdav, I configured it on https protocol + basic authentication for security. Cyberduck is able to login succesfully, but has erratic behaviour when performing different operations, mainly:

  • It fails to upload files sometimes, both individual files and while part of a folder upload.

If you're interested in improving webdav support with nginx servers I would happily create a user account on my server for you to test.

Regards,

Change History (18)

comment:1 Changed on Jul 19, 2012 at 10:24:11 AM by dkocher

  • Status changed from new to assigned

An account for testing would help to resolve this issue.

Last edited on Jan 29, 2013 at 3:46:55 PM by dkocher (previous) (diff)

comment:2 follow-up: Changed on Jul 19, 2012 at 12:10:38 PM by nelson

Hi, thanks for your quick response, I've made an account in server so you can test, details follows:

Type:   WebDAV (HTTP/SSL)
Server: mdav.dejabit.net
Port:   443
Username: cyber
Password: duck

When you login you will see a welcome.txt file.

Let me know if you have any problems login in, or if you need further nginx debug on the server side..

Regards,

Last edited on Jan 29, 2013 at 3:48:58 PM by dkocher (previous) (diff)

comment:3 in reply to: ↑ 2 Changed on Jul 21, 2012 at 10:37:52 PM by dkocher

Replying to nelson:

I get the following failure which indicates WebDAV is not setup for this virtual host.

PROPFIND / HTTP/1.1
Depth: 1
Content-Type: text/xml; charset=utf-8
Content-Length: 99
Host: mdav.dejabit.net
Connection: Keep-Alive
User-Agent: Cyberduck/4.2.2 (Mac OS X/10.8) (i386)
HTTP/1.1 405 Not Allowed
Server: nginx
Date: Sat, 21 Jul 2012 22:36:31 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive

comment:4 Changed on Jul 23, 2012 at 7:46:07 AM by nelson

Hi, when do you get that failure? I can successfully login in with cyberduck..

comment:5 Changed on Oct 10, 2012 at 6:58:34 PM by dkocher

  • Summary changed from Fails to upload files with webdav over https on nginx webdav server to Interoperability with nginx

I can now successfully connect over HTTPS.

comment:6 Changed on Oct 10, 2012 at 7:00:06 PM by dkocher

  • Milestone set to 4.2.2

comment:7 Changed on Nov 26, 2012 at 6:09:12 PM by dkocher

  • Resolution set to worksforme
  • Status changed from assigned to closed

I finally did some testing uploading a directory with files but couldn't see any issues. What specifically does go wrong?

comment:8 follow-up: Changed on Jan 22, 2013 at 3:59:36 PM by nelson

Hi, indeed I've also tested that uploading files and folders works well, what is still failing for me is the "overwriting files" operation. If I upload a file that already exists the overwrite dialog pops up but when performed the action the file didn't got overwrited and an error dialog pops up, I tried to debug the issue server side and nginx is not writing any error or access log message when the error dialog pops up in cyberduck, which it seems to me as it cyberduck didn't sent that call.

The same problem happens when using "Edit file with.." action to edit a file with a text editor, as when you save in the editor cyberduck tries to upload the file and fails to overwrite.

I hope you can reproduce this issue with the test server I set up.

Thanks!

comment:9 in reply to: ↑ 8 ; follow-up: Changed on Jan 29, 2013 at 3:53:34 PM by dkocher

Replying to nelson:

Hi, indeed I've also tested that uploading files and folders works well, what is still failing for me is the "overwriting files" operation. If I upload a file that already exists the overwrite dialog pops up but when performed the action the file didn't got overwrited and an error dialog pops up, I tried to debug the issue server side and nginx is not writing any error or access log message when the error dialog pops up in cyberduck, which it seems to me as it cyberduck didn't sent that call.

The same problem happens when using "Edit file with.." action to edit a file with a text editor, as when you save in the editor cyberduck tries to upload the file and fails to overwrite.

I hope you can reproduce this issue with the test server I set up.

Thanks!

I get a Broken pipe. error which suggests the server is closing the underlying network connection without responding.

comment:10 in reply to: ↑ 9 ; follow-ups: Changed on Mar 8, 2013 at 8:52:14 AM by nelson

Replying to dkocher:

Replying to nelson:

I get a Broken pipe. error which suggests the server is closing the underlying network connection without responding.

Yes, that was a segmentation fault in nginx, see http://trac.nginx.org/nginx/ticket/311#comment:1

The segfault is fixed in nginx-1.2.6+ and the dav upload problem real fix in nginx-1.3.9+

Anyway, as distros are only packaging stable nginx versions 1.2.x and the dav upload erratic problem is fixed in 1.3.9, can I ask if cyberduck can provide an option to disable sending the Expect: 100-continue header ? this way nginx stable versions 1.2.x could be used as reliable dav servers becuase handling the Expect: header was causing the issue.

Basically an option to make ServicePointManager.Expect100Continue = false; see these posts for more info:

http://haacked.com/archive/2004/05/15/http-web-request-expect-100-continue.aspx

http://alihamdar.com/2010/06/19/expect-100-continue/

http://msdn.microsoft.com/en-us/library/system.net.servicepoint.expect100continue.aspx

comment:11 in reply to: ↑ 10 Changed on Mar 8, 2013 at 12:46:44 PM by dkocher

Replying to nelson:

Replying to dkocher:

Replying to nelson:

I get a Broken pipe. error which suggests the server is closing the underlying network connection without responding.

Yes, that was a segmentation fault in nginx, see http://trac.nginx.org/nginx/ticket/311#comment:1

The segfault is fixed in nginx-1.2.6+ and the dav upload problem real fix in nginx-1.3.9+

Anyway, as distros are only packaging stable nginx versions 1.2.x and the dav upload erratic problem is fixed in 1.3.9, can I ask if cyberduck can provide an option to disable sending the Expect: 100-continue header ? this way nginx stable versions 1.2.x could be used as reliable dav servers becuase handling the Expect: header was causing the issue.

Basically an option to make ServicePointManager.Expect100Continue = false; see these posts for more info:

http://haacked.com/archive/2004/05/15/http-web-request-expect-100-continue.aspx

http://alihamdar.com/2010/06/19/expect-100-continue/

http://msdn.microsoft.com/en-us/library/system.net.servicepoint.expect100continue.aspx

You can use the hidden option

defaults write ch.sudo.cyberduck webdav.expect-continue false

comment:12 follow-up: Changed on Mar 8, 2013 at 1:06:52 PM by nelson

Thanks very much for that!!

Btw where do I write that command? I've search for it and it seems a Mac OS X configuration command, but I'm running Cyberduck on windows and running that command in the windows shell gives me "unrecognized command" error.

Regards,

comment:13 in reply to: ↑ 12 ; follow-up: Changed on Mar 8, 2013 at 1:22:06 PM by dkocher

Replying to nelson:

Thanks very much for that!!

Btw where do I write that command? I've search for it and it seems a Mac OS X configuration command, but I'm running Cyberduck on windows and running that command in the windows shell gives me "unrecognized command" error.

Regards,

Please refer to Hidden configuration options.

comment:14 in reply to: ↑ 10 Changed on Mar 8, 2013 at 1:58:29 PM by dkocher

Replying to nelson:

Replying to dkocher:

Replying to nelson:

I get a Broken pipe. error which suggests the server is closing the underlying network connection without responding.

Yes, that was a segmentation fault in nginx, see http://trac.nginx.org/nginx/ticket/311#comment:1

Thanks for the reference.

comment:15 in reply to: ↑ 13 ; follow-up: Changed on Mar 8, 2013 at 3:20:50 PM by nelson

Replying to dkocher:

Replying to nelson:

Thanks very much for that!!

Btw where do I write that command? I've search for it and it seems a Mac OS X configuration command, but I'm running Cyberduck on windows and running that command in the windows shell gives me "unrecognized command" error.

Regards,

Please refer to Hidden configuration options.

Thanks for the info! unfortunately it seems Cyberduck is not obeying that config option, I write it as the help says but Cyberduck continues sending Expect header and so nginx failing.

I'm sure I have written it right, see:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <Ch.Cyberduck.Properties.Settings>
            <setting name="UpgradeSettings" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="CdSettings" serializeAs="Xml">
                <value>
                    <settings>
                         ...
                         <setting name="webdav.expect-continue" value="false" />
                         <setting name="bookmark.import.com.flashfxp3" value="true" />
                          ... and so on

It seems to me like a bug in Cyberduck windows version reading that config.. :-(

Regards,

comment:16 in reply to: ↑ 15 ; follow-up: Changed on Mar 8, 2013 at 3:33:41 PM by dkocher

Replying to nelson:

Replying to dkocher:

Replying to nelson:

Thanks very much for that!!

Btw where do I write that command? I've search for it and it seems a Mac OS X configuration command, but I'm running Cyberduck on windows and running that command in the windows shell gives me "unrecognized command" error.

Regards,

Please refer to Hidden configuration options.

Thanks for the info! unfortunately it seems Cyberduck is not obeying that config option, I write it as the help says but Cyberduck continues sending Expect header and so nginx failing.

I'm sure I have written it right, see:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <Ch.Cyberduck.Properties.Settings>
            <setting name="UpgradeSettings" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="CdSettings" serializeAs="Xml">
                <value>
                    <settings>
                         ...
                         <setting name="webdav.expect-continue" value="false" />
                         <setting name="bookmark.import.com.flashfxp3" value="true" />
                          ... and so on

It seems to me like a bug in Cyberduck windows version reading that config.. :-(

Regards,

You must use the latest beta build for this setting to work.

comment:17 in reply to: ↑ 16 Changed on Mar 8, 2013 at 4:15:59 PM by nelson

Replying to dkocher:

You must use the latest beta build for this setting to work.

Thanks, indeed I've updated to latest beta 4.2.2(10748) and the webdav.expect-continue works well and I could upload files successfully.

That said, deleting a file causes cyberduck to crash, and I clicked the dialog to send you the crash trace along.

Last edited on Mar 8, 2013 at 4:17:24 PM by nelson (previous) (diff)

comment:18 Changed on Mar 8, 2013 at 4:20:53 PM by nelson

Well, it also crashes just when trying to exit the application in "File -> Exit" menu. I updated through Beta channel from within the application.

Note: See TracTickets for help on using tickets.
swiss made software