Commit befc30bc authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Bogdan Nicula's hanging test case was converted to test case 533 and the test

now runs fine.
parent ca5846cd
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -6,6 +6,10 @@

                                  Changelog

Daniel (6 October 2006)
- Bogdan Nicula's hanging test case was converted to test case 533 and the test
  now runs fine.

Daniel (4 October 2006)
- Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
  but that worked nicely in 7.15.5. I converted it into test case 532 and
+1 −1
Original line number Diff line number Diff line
@@ -61,6 +61,6 @@ advice from friends like these:
 Domenico Andreoli, Armel Asselin, Gisle Vanem, Yang Tse, Andrew Biggs,
 Peter Sylvester, David McCreedy, Dmitriy Sergeyev, Dmitry Rechkin,
 Jari Sundell, Ravi Pratap, Michele Bini, Jeff Pohlmeyer, Michael Wallner,
 Mike Protts, Cory Nelson, Bernard Leak
 Mike Protts, Cory Nelson, Bernard Leak, Bogdan Nicula

        Thanks! (and sorry if I forgot to mention someone)
+0 −2
Original line number Diff line number Diff line
To get fixed in 7.16.0 (planned release: October 2006)
======================

66 - Bogdan Nicula's test case

67 - Jeff Pohlmeyer's test case

68 - Dmitriy Sergeyev's test02.c and test03.c
+12 −4
Original line number Diff line number Diff line
@@ -942,9 +942,14 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,

    case CURLM_STATE_WAITDO:
      /* Wait for our turn to DO when we're pipelining requests */
      infof(easy->easy_handle, "Connection #%d: send pipe size = %d\n",
#ifdef CURLDEBUG
      infof(easy->easy_handle, "Conn %d send pipe %d inuse %d athead %d\n",
            easy->easy_conn->connectindex,
            easy->easy_conn->send_pipe->size);
            easy->easy_conn->send_pipe->size,
            easy->easy_conn->writechannel_inuse,
            Curl_isHandleAtHead(easy->easy_handle,
                                easy->easy_conn->send_pipe));
#endif
      if (!easy->easy_conn->writechannel_inuse &&
          Curl_isHandleAtHead(easy->easy_handle,
                              easy->easy_conn->send_pipe)) {
@@ -1232,6 +1237,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         * If an error was returned, and we aren't in completed state now,
         * then we go to completed and consider this transfer aborted.
         */
        if(easy->easy_conn) {
          /* if this has a connection, unsubscribe from the pipelines */
          easy->easy_conn->writechannel_inuse = FALSE;
          easy->easy_conn->readchannel_inuse = FALSE;
        }
        multistate(easy, CURLM_STATE_COMPLETED);
      }
    }
@@ -1345,7 +1355,6 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle)
    Curl_hash_destroy(multi->hostcache);
    Curl_hash_destroy(multi->sockhash);

#if 1
    /* go over all connections that have close actions */
    for(i=0; i< multi->connc->num; i++) {
      if(multi->connc->connects[i] &&
@@ -1367,7 +1376,6 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle)
      free(cl);
      cl= n;
    }
#endif

    Curl_rm_connc(multi->connc);

tests/data/test533

0 → 100644
+53 −0
Original line number Diff line number Diff line
<info>
<keywords>
FTP
PASV
RETR
</keywords>
</info>
# Server-side
<reply>
<data>
</data>

<servercmd>
REPLY RETR 550 the file doesn't exist
REPLY SIZE 550 Can't check for file existence
</servercmd>
</reply>

# Client-side
<client>
<server>
ftp
</server>
<tool>
lib533
</tool>
 <name>
FTP RETR a non-existing file twice using the multi interface
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/path/533
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
</strip>
<protocol>
USER anonymous
PASS curl_by_daniel@haxx.se
PWD
CWD path
EPSV
TYPE I
SIZE 533
RETR 533
EPSV
SIZE 533
RETR 533
QUIT
</protocol>
</verify>
Loading