Dmitriy Sergeyev reported a regression: resumed file:// transfers broke
authorDaniel Stenberg <daniel@haxx.se>
Thu, 2 Aug 2007 14:09:08 +0000 (14:09 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 2 Aug 2007 14:09:08 +0000 (14:09 +0000)
after 7.16.2. This is much due to the different treatment file:// gets
internally, but now I added test 231 to make it less likely to happen again
without us noticing!

CHANGES
RELEASE-NOTES
lib/url.c
tests/data/Makefile.am
tests/data/test231 [new file with mode: 0644]

diff --git a/CHANGES b/CHANGES
index ef30dc1..106f01d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,12 @@
 
                                   Changelog
 
+Daniel S (2 August 2007)
+- Dmitriy Sergeyev reported a regression: resumed file:// transfers broke
+  after 7.16.2. This is much due to the different treatment file:// gets
+  internally, but now I added test 231 to make it less likely to happen again
+  without us noticing!
+
 Daniel S (1 August 2007)
 - Patrick Monnerat and I modified libcurl so that now it *copies* all strings
   passed to it with curl_easy_setopt()! Previously it has always just refered
index 0377adb..bc3fe03 100644 (file)
@@ -32,6 +32,7 @@ This release includes the following bugfixes:
  o FTPS data connection close
  o AIX 4 and 5 get to use non-blocking sockets
  o small POST with NTLM
+ o resumed file:// transfers
 
 This release includes the following known bugs:
 
@@ -53,6 +54,6 @@ advice from friends like these:
  Dan Fandrich, Song Ma, Daniel Black, Giancarlo Formicuccia, Shmulik Regev,
  Daniel Cater, Colin Hogben, Jofell Gallardo, Daniel Johnson,
  Ralf S. Engelschall, James Housley, Chris Flerackers, Patrick Monnerat,
- Jayesh A Shah, Greg Zavertnik, Peter O'Gorman, Greg Morse
+ Jayesh A Shah, Greg Zavertnik, Peter O'Gorman, Greg Morse, Dmitriy Sergeyev
  
         Thanks! (and sorry if I forgot to mention someone)
index 0de87a8..21b869e 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -3604,18 +3604,24 @@ static CURLcode CreateConnection(struct SessionHandle *data,
    ***********************************************************************/
 #ifndef CURL_DISABLE_FILE
   if (strequal(conn->protostr, "FILE")) {
-      /* anyway, this is supposed to be the connect function so we better
-         at least check that the file is present here! */
-     result = Curl_file_connect(conn);
-
-      /* Setup a "faked" transfer that'll do nothing */
-     if(CURLE_OK == result) {
-        conn->data = data;
-        conn->bits.tcpconnect = TRUE; /* we are "connected */
-        ConnectionStore(data, conn);
-
-      result = Curl_setup_transfer(conn, -1, -1, FALSE, NULL, /* no download */
-                                     -1, NULL); /* no upload */
+    /* this is supposed to be the connect function so we better at least check
+       that the file is present here! */
+    result = Curl_file_connect(conn);
+
+    /* Setup a "faked" transfer that'll do nothing */
+    if(CURLE_OK == result) {
+      conn->data = data;
+      conn->bits.tcpconnect = TRUE; /* we are "connected */
+
+      ConnectionStore(data, conn);
+
+      result = setup_range(data);
+      if(result)
+        return result;
+
+      result = Curl_setup_transfer(conn, -1, -1, FALSE,
+                                   NULL, /* no download */
+                                   -1, NULL); /* no upload */
     }
 
     return result;
index 8cc794d..97c1171 100644 (file)
@@ -42,4 +42,5 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46           \
  test405 test604 test605 test606 test607 test608 test609 test294 test295   \
  test296 test297 test298 test610 test611 test612 test406 test407 test408   \
  test409 test613 test614 test700 test701 test702 test704 test705 test703   \
- test706 test707 test350 test351 test352 test353 test289 test540 test354
+ test706 test707 test350 test351 test352 test353 test289 test540 test354   \
+ test231
diff --git a/tests/data/test231 b/tests/data/test231
new file mode 100644 (file)
index 0000000..912ea41
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+# Server-side
+<reply>
+# 16 bytes to check
+<datacheck>
+B01234567
+C01234567
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+file
+</server>
+ <name>
+file:// with resume
+ </name>
+ <command>
+file://localhost/%PWD/log/test231.txt -C 10-
+</command>
+<file name="log/test231.txt">
+A01234567
+B01234567
+C01234567
+</file>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+</verify>
+</testcase>