Привет.
Может кто сталкивался или знает обходной путь?
код работающий под Windows не пашет под эмуляцией
GetLastError() возвращает 317
вот результат работы:
https://www.box.net/shared/5f27679d2ad4fa1d662c
const wstring l_bz2_name = p_DumpFileName + _T(".bz2");
if (File::bz2CompressFile(p_DumpFileName, l_bz2_name) > 0)
{
const TCHAR* l_url = _T("nightorion.dyndns.ws");
CInternetHandle hInternet(InternetOpen(T_VERSIONSTRING, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0));
if (!hInternet)
return false;
CInternetHandle hFTP(InternetConnect(hInternet, l_url, INTERNET_DEFAULT_FTP_PORT, NULL, NULL, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE | INTERNET_FLAG_EXISTING_CONNECT, 0));
if (!hFTP)
{
LogManager::getInstance()->getInstance()->message("[stack-dmp-sender][InternetConnect][Error] " + Util::translateError(GetLastError()));
return false;
}
if (FtpSetCurrentDirectory(hFTP, _T("dumps")))
{
GUID l_Guid = { 0 };
::CoCreateGuid(&l_Guid);
OLECHAR l_szGuid[40] = {0};
::StringFromGUID2(l_Guid, l_szGuid, 40);
wstring l_guid_str, l_guid_str_guid(l_szGuid);
if (l_guid_str_guid.length() > 1)
l_guid_str_guid = l_guid_str_guid.substr(1, 8);
l_guid_str += Util::getCompileDate();
l_guid_str += L'_';
l_guid_str += Util::getCompileTime();
l_guid_str += L'_';
l_guid_str += Text::acpToWide(SETTING(PRIVATE_ID));
l_guid_str += L'_';
l_guid_str += l_guid_str_guid;
l_guid_str += L'_';
if (CompatibilityManager::isWine())
l_guid_str += L"wine_";
if(!p_mediainfo_crash_info.empty())
l_guid_str += L"mediainfo_";
l_guid_str += Util::getFileName(l_bz2_name);
LogManager::getInstance()->getInstance()->message("[stack-dmp-sender][FtpPutFile] Start upload: " + Text::fromT(l_bz2_name));
if (FtpPutFile(hFTP, l_bz2_name.c_str(), l_guid_str.c_str(), FTP_TRANSFER_TYPE_BINARY, 0) != 0)
{
LogManager::getInstance()->getInstance()->message("[stack-dmp-sender][FtpPutFile][OK!]");
File::deleteFile(l_bz2_name);
return true;
}
else
{
TCHAR l_msg[2000]; l_msg[0] = 0;
_sntprintf(l_msg, sizeof(l_msg),_T("Ошибка передачи файлов на сервер разрабоитчиков\r\nЕсли не сложно вышлите их по почте на адрес ppa74@ya.ru!\r\n")
_T("Код ошибки GetLastError() = %d [%s]\r\n")
_T("Файл l_bz2_name = %s\r\n")
_T("Файл l_guid_str = %s\r\n"),
GetLastError(),
Text::toT(Util::translateError(GetLastError())).c_str(),
l_bz2_name.c_str(),
l_guid_str.c_str()
);
::MessageBox(NULL,l_msg, _T("Ошибка передачи дампа на ftp-сервер разработчиков"), MB_ICONSTOP | MB_OK);
LogManager::getInstance()->getInstance()->message("[stack-dmp-sender][FtpPutFile][Error] " + Util::translateError(GetLastError()));
}