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

clean up properly on failure to enable easier libcurl leak detection

parent 9ce0a7b4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ int test(char *URL)
      
      if (res != CURLM_OK) {
        fprintf(stderr, "not okay???\n");
        return 80;
        break;
      }

      FD_ZERO(&rd);
+42 −40
Original line number Diff line number Diff line
@@ -35,7 +35,8 @@ int test(char *URL)

  res = curl_multi_add_handle(m, c);
  if(res && (res != CURLM_CALL_MULTI_PERFORM))
    return 1; /* major failure */
    ; /* major failure */
  else {
    do {
      struct timeval interval;

@@ -82,6 +83,7 @@ int test(char *URL)
      /* we only allow a certain number of loops to avoid hanging here
         forever */
    } while(rc && (--loop>0));
  }

  curl_multi_remove_handle(m, c);
  curl_easy_cleanup(c);
+7 −2
Original line number Diff line number Diff line
@@ -72,9 +72,14 @@ int test(char *URL)
  /* get a curl handle */
  curl = curl_easy_init();
  if(curl) {
    struct curl_slist *hl;
    /* build a list of commands to pass to libcurl */
    headerlist = curl_slist_append(headerlist, buf_1);
    headerlist = curl_slist_append(headerlist, buf_2);
    hl = curl_slist_append(headerlist, buf_1);
    if(hl) {
      headerlist = curl_slist_append(hl, buf_2);
      if(hl)
        headerlist = hl;
    }

    /* enable uploading */
    curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ;
+11 −5
Original line number Diff line number Diff line
@@ -148,13 +148,19 @@ int test(char *URL)
  /* prepare share */
  printf( "SHARE_INIT\n" );
  share = curl_share_init();
  curl_share_setopt( share, CURLSHOPT_LOCKFUNC,   lock);
  curl_share_setopt( share, CURLSHOPT_UNLOCKFUNC, unlock);
  curl_share_setopt( share, CURLSHOPT_USERDATA,   &user);
  scode = curl_share_setopt( share, CURLSHOPT_LOCKFUNC, lock);
  scode += curl_share_setopt( share, CURLSHOPT_UNLOCKFUNC, unlock);
  scode += curl_share_setopt( share, CURLSHOPT_USERDATA, &user);
  printf( "CURL_LOCK_DATA_COOKIE\n" );
  curl_share_setopt( share, CURLSHOPT_SHARE,      CURL_LOCK_DATA_COOKIE);
  scode += curl_share_setopt( share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
  printf( "CURL_LOCK_DATA_DNS\n" );
  curl_share_setopt( share, CURLSHOPT_SHARE,      CURL_LOCK_DATA_DNS);
  scode += curl_share_setopt( share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);

  if(scode) {
    curl_share_cleanup(share);
    return 2;
  }

  
  res = 0;

+4 −3
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ int test(char *URL)
    }
  }
  msg = curl_multi_info_read(multi, &still_running);
  if(msg)
    /* this should now contain a result code from the easy handle,
       get it */
    i = msg->data.result;