Re[2]: Странный srv_cookie в протоколе OSCAR. Очень мешает ж
От: Ozean Engel  
Дата: 21.09.04 04:36
Оценка:
Здравствуйте, NeuroVirus, Вы писали:

NV>login.icq.com возвращает целую кучу IP адресов, тн. DNS рулетка,

NV>посмотрите закономерность между IP к которому идет коннект и возврат.
NV>подозреваю что у вас в реализации возможна какая-то ошибочка,

Вот я и говорю, что после отправки первого же своего пакета на login.icq.com (пакета cli_ident) я вместо ответного srv_cookie с одним из адресов из этой DNS-рулетки получал srv_cookie с вышеприведенной ссылкой.
В общем, спасибо, с этим разобрался. Подсказали, что, возможно, защита от частых подключений. Я на это не грешил, т.к. казалось, что таких ситуаций не возникало. Однако проснифферил частое подключение/отключение Мирандой и ICQ 2003 Pro и убедился, что в этом случае аська присылает тот же пакет, что и на мой клиент. В нем еще содержится TLV 08 — Error code. Видимо, надо выдерживать бОльшую паузу при автореконнекте.
Тогда последний пока что вопрос (не задал сразу, чтобы не запутывать). Поясняю детали про свой клиент: он держит одновременно много соединений с ICQ-серверами, т.е. через него работают многие абоненты. Это своего рода шлюз. И, бывает, возникает такая ситуация: начинаю процесс логина, получаю правильный srv_cookie, подтверждаю Rate Limit, настраиваю и активирую сервисы и пр. согласно login sequence, и где-то в это время процесс логина прерывается. Момент разрыва "плавает" и происходит не после какого-либо конкретного отправленного в сокет пакета. В этом случае от аськи никаких пакетов протокола AIM не приходит, приходит только пакет TCP, содержащий "rst". Соответственно, на уровне Windows Sockets получаю ошибку WSAECONNRESET (10054) — Connection reset by peer. An existing connection was forcibly closed by the remote host. MSDN подтверждает, что эта ошибка может выдаваться в случае если удаленный хост использует hard close. Но вот в каких случаях аськин сервер может так со мной поступать? Оговорю, что перелогин в этом случае тоже помогает, при том, что, как вы понимаете, каждый раз я шлю одни и те же пакеты.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.