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

Fix how TFTP connections are treated when re-used, if the SessionHandle has

been used for other protocols in between. I found this when test 2004 started
to fail for me!
parent a2926ebe
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -698,8 +698,7 @@ static CURLcode Curl_tftp_done(struct connectdata *conn, CURLcode status,
static CURLcode Curl_tftp(struct connectdata *conn, bool *done)
{
  struct SessionHandle  *data = conn->data;
  tftp_state_data_t     *state =
    (tftp_state_data_t *) conn->data->reqdata.proto.tftp;
  tftp_state_data_t     *state;
  tftp_event_t          event;
  CURLcode              code;
  int                   rc;
@@ -716,12 +715,14 @@ static CURLcode Curl_tftp(struct connectdata *conn, bool *done)
    make sure we have a good 'struct TFTP' to play with. For new connections,
    the struct TFTP is allocated and setup in the Curl_tftp_connect() function.
  */
  if(!state) {
  Curl_reset_reqproto(conn);

  if(!data->reqdata.proto.tftp) {
    code = Curl_tftp_connect(conn, done);
    if(code)
      return code;
    state = (tftp_state_data_t *)conn->data->reqdata.proto.tftp;
  }
  state = (tftp_state_data_t *)conn->data->reqdata.proto.tftp;

  code = Curl_readwrite_init(conn);
  if(code)