cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: FTP Upload problem : crash

From: Jan de Lint <jg.de.lint_at_hccnet.nl>
Date: Sat, 20 Nov 2004 18:49:55 +0100

Similar (same?) problem here with 7.12.2 dll and an old version of Visual C++.
WinXP as well.
No clue yet. Haven't tried much due to lack of capability.
Jan
  ----- Original Message -----
  From: joseph.tilley_at_atxinc.com
  To: curl-library_at_cool.haxx.se
  Sent: Saturday, November 20, 2004 6:29 PM
  Subject: FTP Upload problem : crash

  Hello,

  I have a program I am developing with curl but am having troubles uploading a file.

  These are the steps I am currently taking in my program. I would appreciate if anyone could point out any thing I am doing wrong.

  OS: WinXP
  Curl Version: 7.11.1
  IDE: Visual C++ .NET

          char m_szErrMsgLast[1024];
          FILE *pInput = fopen(szLocalFile, "r"); // Open the local file (C:\tmp.txt would suffice here)
          if (NULL == pInput)
                  throw "Unable to open local file";
          long fsize = filelength(fileno (pInput));

          curl_global_init(CURL_GLOBAL_ALL);

          void * m_pCurl = curl_easy_init();

          // set the errror buffer
          curl_easy_setopt(m_pCurl, CURLOPT_ERRORBUFFER, m_szErrMsgLast);

          //Set the passive mode
          curl_easy_setopt(m_pCurl, CURLOPT_FTP_USE_EPSV, TRUE);

          // enable uploading
          curl_easy_setopt(m_pCurl, CURLOPT_UPLOAD, TRUE) ;

          // Set the URL to transmit to (the value of this is remotefile.txt)
          curl_easy_setopt(m_pCurl, CURLOPT_URL, szRemoteFile);

          // Set a pointer to the file to be sent, and set the size
          curl_easy_setopt(m_pCurl, CURLOPT_INFILE, pInput);
        curl_easy_setopt(m_pCurl, CURLOPT_INFILESIZE, fsize);

          // Want to watch what happens!
          curl_easy_setopt(m_pCurl, CURLOPT_VERBOSE, TRUE);
                  
          // Fire away!
          res = curl_easy_perform(m_pCurl);

  What results is a crash in curl. The curl_easy_preform call at the end throws an exception:
  (I replaced any identifying information with garbage numbers, but the messages are untouched.

  * About to connect() to 111.22.33.44 port 21
  * Connected to 111.22.33.44 (111.22.33.44) port 21
  < 220 server.servername.com FTP server (Version wu-2.6.2(9) Mon Jul 21 16:06:46 EDT 2003) ready.
> USER ATXOTST
  < 331 Password required for MY_USERNAME
> PASS MY_PWD
  < 230 User MY_USERNAME logged in.
  * We have successfully logged in
> PWD
  < 257 "/abc/def/ghi/jkl" is current directory.
  * Entry path is '/abc/def/ghi/jkl'
> CWD in
  < 250 CWD command successful.
> PASV
  < 227 Entering Passive Mode (111,22,33,44,67,245)
  * About to connect() to 111.22.33.44 port 17397
  * Connecting to 111.22.33.44 (111.22.33.44) port 17397
  * Connected the data stream with PASV!
> TYPE I
  < 200 Type set to I.
> STOR ATX_620000582
  < 150 Opening BINARY mode data connection for remotefile.txt.

  This pauses for a while, I assume the file transfer attempts to take place.

  Then the excetion is thrown:

  + ex { _COMPlusExceptionCode=-532459699 _className="System.NullReferenceException" _exceptionMethod=<undefined value> ...} System.Exception
  + "System.NullReferenceException: Object reference not set to an instance of an object.

  Any advice at all as to what I may be doing wrone here would be GREATLY appreciated!

  Cheers,
  joe

  Joe Tilley
  E-File Senior Engineer
  ATX II, LLC
  Phone: (207) 498-4289 ext. 40728
  Fax: (207) 498-6838
  E-Mail: joseph.tilley_at_atxinc.com
Received on 2004-11-20