protocol: Fix case where download can fail for small files.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 18 Aug 2011 18:13:32 +0000 (19:13 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Fri, 16 Sep 2011 14:46:12 +0000 (15:46 +0100)
commit914d1378b2eaf1dd439ebc562b0baa10127bd4f7
tree066165adf6d7af91aa4a13817a420bf3b64aa287
parent3eed1c3fb211b235b3e26123a723f75db070c067
protocol: Fix case where download can fail for small files.

There is another case where downloads of small files could fail if the
library side (writer) fails.  In this case the library would send back
a cancellation, but it would be received after the daemon had finished
sending the whole file (because the file is small enough).  The daemon
would reenter the main loop and immediately get an unexpected cancel
message, causing the daemon to die.

This commit also makes test-cancellation-download-librarycancels.sh
more robust.  We use Monte-Carlo testing with a range of file sizes.
Small file sizes should trigger the error case.
(cherry picked from commit e4cba8f2b1a68e7361ce342ff659cccb0490446e)
daemon/proto.c
regressions/test-cancellation-download-librarycancels.sh