diff --git a/lib/transfer.c b/lib/transfer.c
index 413eaeba2f7c623f107519f62772124c2bfa3f83..e8cad9e3ff9b5f0ce9ae9818938b502ab9715102 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1007,7 +1007,13 @@ CURLcode Curl_readwrite(struct connectdata *conn,
                             &bytes_written);       /* actually send away */
         if(result)
           return result;
-        else if(conn->upload_present != bytes_written) {
+
+        if(data->set.verbose)
+          /* show the data before we change the pointer upload_fromhere */
+          Curl_debug(data, CURLINFO_DATA_OUT, conn->upload_fromhere,
+                     bytes_written);
+      
+        if(conn->upload_present != bytes_written) {
           /* we only wrote a part of the buffer (if anything), deal with it! */
 
           /* store the amount of bytes left in the buffer to write */
@@ -1032,11 +1038,6 @@ CURLcode Curl_readwrite(struct connectdata *conn,
           }
         }
 
-        if(data->set.verbose)
-          Curl_debug(data, CURLINFO_DATA_OUT, conn->upload_fromhere,
-                     bytes_written);
-      
-
         k->writebytecount += bytes_written;
         Curl_pgrsSetUploadCounter(data, (double)k->writebytecount);