У меня проблема с gSoap - он не закрывает сокет. Вот ситуация: приложение работает нормально, но когда я вызываю функцию «reload», оно не может восстановить соединение. Вот фрагмент кода:
soap_destroy( &m_soapObj );
soap_end( &m_soapObj );
soap_done(&m_soapObj);
sleep(1);
soap_init(&m_soapObj);
//m_ptrThis should be initialized already
assert( m_ptrThis != NULL );
m_soapObj.user = &m_ptrThis;
m_soapObj.accept_timeout = nAcceptTimeout;
m_ptrThreadPool->SetNumThreads( nNumThreads );
m_nSocketListener = soap_bind(&m_soapObj, NULL, nPort, nBacklog);
if (!soap_valid_socket(m_nSocketListener))
{
throw Exception(
"Cannot start listening on port: %d", nPort );
}
и он выдает .. Когда я пытаюсь использовать soap_free, программа вылетает, так как я не создаю новый объект Soap, просто инициализирую его снова. ТАК, soap_done должен работать. И интересно то, что не происходит каждый раз.
Это очень странно .. и срочно: /
Заранее большое спасибо
РЕДАКТИРОВАТЬ Проблема решена. Большое спасибо Duck!