Сокеты в ISA сервере
От: road_runner  
Дата: 15.03.05 11:14
Оценка:
Приветствую All.
Пишется прикладной фильтр для ISA сервера. При передачи данных на "внешний" сокет (сокет для взаимодействия с информационными ресурсами) случайным образом происходят задержки передачи данных на 30-50 секунд (т.е. то данные проходят моментально, то с задержкой на указанный промержуток времени).

Послылаются данные навнешний сокет фильтра следующим образом

IFWXIOBuffer *cbuf;
Lock();
m_spCallBackInterface->CreateConstBuffer( (PBYTE)a_data, a_len, &cbuf);
a_IFWXSocket->Send(cbuf,NULL,0);
cbuf->Release();
Unlock();

Сокет создается следующим образом:

Lock();
int len = sizeof(ProxyAddr);
hr = m_spInternalSocket->GetSockName(&ProxyAddr, &len);

dstAddr.sin_family = AF_INET;
dstAddr.sin_port = htons(a_port);
dstAddr.sin_addr.s_addr= a_dst.S_un.S_addr;

if(SUCCEEDED(hr))
hr=m_spCallBackInterface->CreatePrivateSession(&m_LocalAddress,sizeof(m_LocalAddress),// указатель на IFWXSession
&ProxyAddr,sizeof(ProxyAddr),NULL,&spSession);
if(SUCCEEDED(hr))
hr=spSession->CreateNetworkSocket(FWX_PROTOCOL_TCP,&m_extSocket);

if(SUCCEEDED(hr))
hr = m_extSocket->Connect((PSOCKADDR)&dstAddr, sizeof(dstAddr));

Если сокет создается через class IFWXFirewall, то временных задержек не происходит.

Мысли есть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.