Патч с опциями сокета
Этот патч я в январе 2004 предлагал для Хьюрварда. Никто на него не жаловался. По идее, должно работать лучше, должны уменьшиться лаги. Особенно должна уменьшиться задержка поступления сообщений в начале битвы. По хорошему надо аналогичные изменения внести в mcclient, да руки н е доходят. Всю славу - Горилюбу.
*** comm.c.orig 2004-10-05 17:39:24.229138279 +0400
--- comm.c 2004-10-05 17:42:51.507308315 +0400
***************
*** 1754,1759 ****
--- 1754,1778 ----
/* keep it from blocking */
nonblock(desc);
+ { // set socket options Olleg 2004-10-05
+ int opt;
+ #if defined(IPTOS_LOWDELAY) && !defined(CIRCLE_MACINTOSH)
+ // Выставляем приоритет для интерактивных пакетов
+ opt=IPTOS_LOWDELAY;
+ if (setsockopt(s, SOL_IP, IP_TOS, &opt, sizeof(opt)) < 0) {
+ perror ("Can't set IPTOS_LOWDELAY\n");
+ }
+ #endif
+ #if defined(TCP_NODELAY) && !defined(CIRCLE_MACINTOSH)
+ // не накапливать информацию в буфере перед посылкой абоненту
+ // ведет к уменьшению размеров пакетов и своевременному их отправлению
+ opt=1;
+ if (setsockopt(s, SOL_TCP, TCP_NODELAY, &opt, sizeof(opt)) < 0) {
+ perror ("Can't set TCP_NODELAY\n");
+ }
+ #endif
+ }
+
/* set the send buffer size */
if (set_sendbuf(desc) < 0)
{CLOSE_SOCKET(desc);
__________________
Olleg
|