[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.
… В общем, думаю, надо последовать правилу:
А потом будем разбираться.