[winsock][BUG CHECK] Чтение из закрытого порта подключения. Ошибка WinSock: 0
Вчера замутил инструкцию по загрузке данных из FireBird в Excel.
Многократно нарывался на %subj%.
Проблему давил OK-еем. Она не сильно мешала достижения финиша.
Позже сообразил, что она уже вылазила. Причем совсем недавно.
В том случае, проблема лечилась указанием имени пользователя в верхнем регистре (GAMER) — это (насколько я понимаю) задействовало SRP-аутентификацию. А с нижним регистром через раз отрабатывала Legacy_Auth аутентификация.
Но вчера SYSDBA был в верхнем регистре!
Сегодня пару раз попробовал воспроизвести вчерашнюю проблему в Excel — не воспроизводится.
Полез в код провайдера, посмотреть где эта ошибка выкидывается.
const int n=m_spProvider->m_recv.point()
(m_hSocket,
reinterpret_cast<char*>(pv),
icb,
RemoteFB__INET_StaticCfg::c_FB_RECV_FLAGS);
if(n==SOCKET_ERROR)
{
const int winsockErr=m_spProvider->m_WSAGetLastError.point()();
//! \todo
//! Process interupt error?
// ERROR - failed to read from INET port
t_ibp_error exc(E_FAIL,
ibp_mce_winsock__failed_to_read_from_port_1,
IBP_CreateCustomErrorFor_CnFailed());
exc<<winsockErr;
exc.raise_me();
}//if n==SOCKET_ERROR
if(n==0)
{
const int winsockErr=m_spProvider->m_WSAGetLastError.point()();
// ERROR - [BUG CHECK] read from closed socket?
t_ibp_error exc(E_FAIL,
ibp_mce_winsock__bug_check__read_from_closed_port_1,
IBP_CreateCustomErrorFor_CnFailed());
exc<<winsockErr;
exc.raise_me();
}//if
Выкидывается она, когда recv возвращает 0.
… В общем, думаю, надо последовать правилу:
А потом будем разбираться.
