trouble with webdavs with data more than 20Mb (lp:#1085720)

[Original report](https://bugs.launchpad.net/bugs/1085720) created by **Rolf Glei (rogle-le-deactivatedaccount)**
```
Hello,

I've used duplicity for backup. Now my provider changed and I've started a
new backup. Errors as shown below are given, if data will exceed something
about 10-20Mb:

Uploading data with duplicity:

duplicity 0.6.20 (October 28, 2012)
Args: /usr/local/bin/duplicity --volsize 5 --num-retries 10 /media/test/xxx
webdavs://xxx@webdav.xxx.de/xxx
/usr/bin/python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5]

give errors as shown below (1-4) if the data will exceed about 20Mb

1) ----------
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
WebDAV backend giving up after 10 attempts to PUT /xxx/duplicity-
full...Z.vol8.difftar.gpg
BackendException: (200, 'OK')

2) ----------
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
WebDAV backend giving up after 10 attempts to PUT /xxx/duplicity-
full...Z.vol30.difftar.gpg
BackendException: (200, 'OK')

3) ----------
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
Traceback (most recent call last):
  File "/usr/local/bin/duplicity", line 1403, in <module>
    with_tempdir(main)
  File "/usr/local/bin/duplicity", line 1396, in with_tempdir
    fn()
  File "/usr/local/bin/duplicity", line 1371, in main
    full_backup(col_stats)
  File "/usr/local/bin/duplicity", line 501, in full_backup
    globals.backend)
  File "/usr/local/bin/duplicity", line 399, in write_multivol
    (tdp, dest_filename, vol_num)))
  File "/usr/local/lib/python2.6/dist-
packages/duplicity/asyncscheduler.py", line 145, in schedule_task
    return self.__run_synchronously(fn, params)
  File "/usr/local/lib/python2.6/dist-
packages/duplicity/asyncscheduler.py", line 171, in __run_synchronously
    ret = fn(*params)
  File "/usr/local/bin/duplicity", line 398, in <lambda>
    async_waiters.append(io_scheduler.schedule_task(lambda tdp,
dest_filename, vol_num: put(tdp, dest_filename, vol_num),
  File "/usr/local/bin/duplicity", line 296, in put
    backend.put(tdp, dest_filename)
  File "/usr/local/lib/python2.6/dist-
packages/duplicity/backends/webdavbackend.py", line 257, in put
    response = self.request("PUT", url, source_file.read())
  File "/usr/local/lib/python2.6/dist-
packages/duplicity/backends/webdavbackend.py", line 110, in request
    response = self.conn.getresponse()
  File "/usr/lib/python2.6/httplib.py", line 990, in getresponse
    response.begin()
  File "/usr/lib/python2.6/httplib.py", line 391, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.6/httplib.py", line 349, in _read_status
    line = self.fp.readline()
  File "/usr/lib/python2.6/socket.py", line 427, in readline
    data = recv(1)
  File "/usr/lib/python2.6/ssl.py", line 215, in recv
    return self.read(buflen)
  File "/usr/lib/python2.6/ssl.py", line 136, in read
    return self._sslobj.read(len)
SSLError: The read operation timed out

4) -------------
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
WebDAV backend giving up after 10 attempts to PUT /xxx/duplicity-
full...Z.vol3.difftar.gpg
BackendException: (412, 'Precondition Failed')

*********************************************

Checking saved data with verify gives often errors like the shown below
(5-6) (all actions were done with same value PASSPHRASE!)

5) -------------
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Fri Nov 30 23:47:20 2012
GPGError: GPG Failed, see log below:
===== Begin GnuPG log =====
gpg: decrypt_message failed: eof
===== End GnuPG log =====

6)
Copying duplicity-full-signatures...Z.sigtar.gpg to local cache.
Copying duplicity-full...Z.manifest.gpg to local cache.
Last full backup date: Sat Dec  1 16:43:32 2012
Invalid data - SHA1 hash mismatch for file:
 duplicity-full...voll7.difftar.gpg
 Calculated hash: da39a3ee5e6b4b0d3255bfef95601890afd80709
 Manifest hash: fbdfcc66b6900103c3b73580fee55324dac6c40d

**********************************************

As an error occurs no data will be available for download: all is lost... -
isn't it?

Thanks lot for ideas...
```

Story points: 6.0