Első tesztem a curl-FTP-vel (upload)

Persze semmi sem megy elsőre, most éppen az van, hogy


* Uploaded unaligned file size (359 out of 7 bytes)

amiből aztán az lesz, hogy


curl_easy_perform() failed: 18: Transferred a partial file

Namostan a tcpdump szerint a dróton 359 byte ment át (történetesen a /etc/motd, ami tényleg ekkora).

Első ötlet: hátha más partnerrel más a jelenség. Nem vált be, ugyanaz történik.

Második ötlet: van egy opcionális setopt-hívás, hogy CURLOPT_INFILESIZE / CURLOPT_INFILESIZE_LARGE. Most próbáljuk ki, hogy hátha nem annyira opcionális.

Harmadik ötlet: fordítsuk a curl debug-módban:


3403	    if((-1 != data->state.infilesize) &&
(gdb) p data->state.infilesize
$8 = 7

Szóval, mi lenne az az infilesize?

Szerk: valahogy a sorok száma lesz, mivel ASCII módban vagyunk!

Hozzászólások

Valami ilyesmi lesz ebből:


--- transfer.~c 2015-07-25 10:54:03.000000000 +0200
+++ transfer.c	2015-09-24 17:42:00.000000000 +0200
@@ -923,7 +923,9 @@
             if(!data->set.crlf) {
               /* we're here only because FTP is in ASCII mode...
                  bump infilesize for the LF we just added */
-              data->state.infilesize++;
+              if (data->state.infilesize != -1) {
+                data->state.infilesize++;
+              }
             }
           }
           else

https://github.com/bagder/curl/issues/453