Гм, но в конфиге ведь другое написано - "Seconds to wait before concluding an attempt to connect has failed." - т.е. речь идет именно о попытке соединения.
на заборе тоже бывает разное написано. Эта запись где? В конфиге сервера. Какое отношение она имеет к клиенту, который стучится к выключенному серверу?
Почему, например, у меня при попытке коннекта к нестартованному серверу (или к роутеру, где ФБ нет) IBExpert показывает ошибку через 5 секунд, а не через 180? Почему если пытаться законнектиться к ФБ наружу в инет например к
http://www.ibase.ru таймаут наступает через 40-60 секунд?
Почему в исходниках на самом деле эта переменная называется port_connect_timeout?
Почему там написано
/* Implement an error-detection protocol to ensure that the client
is still there. Use the select() call with a
timeout to wait on
the connection for an incoming packet. If none comes within a
suitable time interval, write a dummy packet on the connection.
If the client is not there, an error will be returned on the write.
Почему вообще этот самый пресловутый таймаут используется в единственном месте inet.cpp
Код: Выделить всё
timeout.tv_sec = port->port_connect_timeout;
time_ptr = &timeout;
...
#if (defined WIN_NT)
slct_count = select(FD_SETSIZE, &slct_fdset, NULL, NULL, time_ptr);
#else
slct_count = select((SOCKET) port->port_handle + 1, &slct_fdset,
NULL, NULL, time_ptr);
?
hvlad писал(а):Путаешь ConnectionTimeout с DummyPacketInterval
ок, путаю.
ConnectionTimeout - допустимое время неответа в существующем (!) коннекте.
DummyPacket - если произошла ошибка по ConnectionTimeout, то клиенту шлется пустой пакет, и если через DummyPacketInterval сервер не получил ответа от клиента, клиент считается отрубившимся. Так?
Ну и наконец. В том же inet.cpp есть функция inet_try_connect. Если я правильно понимаю, то это и есть попытка коннекта к серверу. Если да, то где в ней указание таймаута? Да хоть бы и в inet_connect.
port = inet_try_connect(packet, rdb, file_name, node_name, status_vector, dpb);
(про isc_dpb_connect_timeout я пока промолчу).