Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++ Win32 MinGW
This is perplexing me... I am writing a DLL to provide FTP upload and download functionality. I am using the Windows INET API's to achieve this, and when I make a call to InternetConnect() it fails with error code 6 (Invalid Handle Value). I was trying to figure out why it kept failing, so I added a call to InternetGetLastResponseInfo() and it magically started working. I commented out the call and it stopped working. I repeated this several times. It doesn't matter where I put the call to InternetGetLastResponseInfo() either, as long as the function is called at some point, it works. If I comment out the call, then the call to InternetConnect() fails.
 
ATCFTP_EXTERN bool atcftp_put(
	char *server, 
	int port, 
	char *username, 
	char *password, 
	char *localfile, 
	char *remotefile, 
	ATCFTP_CALLBACK progress, 
	int id )
{
 
	HINTERNET hInet, hFTP, hFile;
	FILE *pFile;
	long total;
	long left;
	char *buffer;
 

	#ifdef DEBUG
	buffer = (char*) malloc( 512 );
	memset( buffer, 0, 512 );
	sprintf( buffer, "Server = \"%s\"\nPort = \"%d\"\nUsername = \"%s\"\nPassword = \"%s\"", server, port, username, password );
	MessageBox( NULL, buffer, "ATCFTP DEBUG", MB_OK | MB_ICONINFORMATION );
	#endif
 

	// Open Internet Connection
	if( NULL != progress )
		progress( id, ATCFTP_STATUS_PREPARING, 0, 0 );
	if( NULL == (hInet=InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG , NULL, NULL, 0)) )
	{
		#ifdef SHOW_ERRORS
		ShowError( "InternetOpen");
		#endif
		return false;
	}
 

 
	
	// Connect to FTP server
	if( NULL != progress )
		progress( id, ATCFTP_STATUS_CONNECTING, 0, 0 );
	if( NULL == (hFTP=InternetConnect(hInet,server,port,username,password,INTERNET_SERVICE_FTP,0,0)) )
	{
		#ifdef SHOW_ERRORS
		ShowError( "InternetConnect" );
		DWORD dwError;
		char lpszBuffer[512];
		DWORD dwBufferLength = sizeof(lpszBuffer);
		InternetGetLastResponseInfo( &dwError, lpszBuffer, &dwBufferLength );
		MessageBox( NULL, lpszBuffer, "ATCFTP ERROR", MB_OK | MB_ICONERROR );
		#endif
		InternetCloseHandle(hInet);
		return false;
	}
 
		
	
	return true;
	
}
Posted 5-Sep-11 10:35am
Comments
cariolihome at 5-Sep-11 17:18pm
   
I tried Your code and it works without any call to InternetGetLastResponseInfo function.
May be atcftp_put function parameters are wrong.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 410
1 Jochen Arndt 200
2 Richard MacCutchan 135
3 DamithSL 105
4 PIEBALDconsult 90
0 OriginalGriff 6,045
1 DamithSL 4,601
2 Maciej Los 4,032
3 Kornfeld Eliyahu Peter 3,480
4 Sergey Alexandrovich Kryukov 3,220


Advertise | Privacy | Mobile
Web02 | 2.8.141220.1 | Last Updated 5 Sep 2011
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100