I have used the latest WinSCP version on Windows 10 to transfer large files to a WebDAV server via 10Gbps connection. Iperf3 benches 9.2Gbps between client and server. WinSCP manages to do around 70MB/s there is one CPU core at 80% and a second core at around 30% while transferring to WebDAV using normal HTTP, HTTPS is even slower. On the same client I used CarotDAV which is able to transfer at around 400MB/s. I used Wireshark to check the difference in transfer between the two clients.
I'm attaching screenshots of the capture. As seen in the capture, CarotDAV sends more data in each packet. IMHO those little packages send to the server by WinSCP are most likely the reason why it is so slow. To me it looks like it uses a default socket send buffer of 8192, which can be seen in the Wireshark dump. Can you set
SO_SNDBUFto something more reasonable like 65536?
P.S. I also tested throughput from a Linux client using mount.davfs2 which also uses libneon, it also delivers 400MB/s.