Home
Psi+ Project
psi-dev@conference.jabber.ru
Среда, 18 июня 2014< ^ >
KukuRuzo установил(а) тему: • Psi+ Project — Development branch of Psi IM Jabber client
• Room languages: Russian, English
http://psi-dev.googlecode.com/ | http://psi-plus.com/
• Wiki: http://psi-plus.com/wiki/ || FAQ: http://psi-plus.com/wiki/faq
• Forum: http://forum.psi-plus.com/ (Registration: http://forum.psi-plus.com/viewtopic.php?f=1&t=548 )
• Psi+ Windows Installer v0.16.361 || Changelog: https://raw.github.com/psi-plus/main/master/changelog.txt
• Чатлоги: http://chatlogs.jabber.ru/psi-dev@conference.jabber.ru
• Правила поведения в конференции: http://psi-plus.com/wiki/conference_rules
• "1000 мелочей" можно *самостоятельно* настроить плагином Extended Options Plugin ;-)
• Обсуждения новой истории для Psi+ https://gist.github.com/liuch/5460050
• Новая страница загрузок | New Downloads Location: http://sourceforge.net/projects/psiplus/files/
• Склеивалка истории для ОС Windows: http://yadi.sk/d/dwwq0ucFR85Rw (только для тестов, не забываем сделать бэкап)
• Сборки под Windows с новой историей http://yadi.sk/d/FD8HHORTQ5HYc
Конфигурация комнаты
Участники комнаты

GMT+4
[00:05:12] Neustradamus вышел(а) из комнаты
[00:05:18] Neustradamus вошёл(а) в комнату
[01:37:46] Hamper_ вышел(а) из комнаты
[01:38:07] Hamper_ вошёл(а) в комнату
[04:32:33] proxy_m вышел(а) из комнаты
[05:16:12] rion☫ вошёл(а) в комнату
[05:30:23] Hamper_ вышел(а) из комнаты
[05:31:37] Hamper_ вошёл(а) в комнату
[06:13:28] proxy_m вошёл(а) в комнату
[06:33:52] Торчёк вошёл(а) в комнату
[06:48:23] Торчёк вышел(а) из комнаты
[06:55:08] proxy_m вышел(а) из комнаты
[07:24:22] rion☫ вышел(а) из комнаты
[07:32:17] Neustradamus вышел(а) из комнаты
[07:32:17] Neustradamus вошёл(а) в комнату
[08:19:13] mrDoctorWho вышел(а) из комнаты
[08:40:45] Dealer_WeARE вошёл(а) в комнату
[09:03:41] KukuRuzo вошёл(а) в комнату
[09:10:59] ivan1986 вошёл(а) в комнату
[09:29:16] rion☫ вошёл(а) в комнату
[09:53:20] Леван вошёл(а) в комнату
[10:18:12] O01eg вышел(а) из комнаты
[10:30:09] westsibe вошёл(а) в комнату
[10:32:02] westsibe вышел(а) из комнаты
[11:19:23] Леван вышел(а) из комнаты: Replaced by new connection
[11:19:24] Леван вошёл(а) в комнату
[11:25:32] Nirdosh_ вышел(а) из комнаты
[11:56:04] Nirdosh_ вошёл(а) в комнату
[12:04:22] proxy_m вошёл(а) в комнату
[12:25:46] Леван вошёл(а) в комнату
[12:26:00] Леван вышел(а) из комнаты
[12:26:31] proxy_m вышел(а) из комнаты
[12:48:32] <rion☫> нужно общественное мнение по реализации rfc6555 (happy eyeballs) для решения проблемы ipv6.
текущая реализация:
есть bsocket
есть resolver
алг:
bsocket говорит резолверу начать резолвить xmpp сервис
резолвер дастает srv запили для заданного хоста
резолвер резолвит ipv6 записи для первой записи полученной из srv
резолвер сигналит что у него есть отрезолвенные записи
bsocket берет первую запись из очереди резолвера и пытается подключиться
в случае успеха bsocket останавливает резолвер и считается подключенным
в случае неудачи bsocket говорит резолверу что ему понадобятся ещё адреса
если у резолвера есть ещё адреса от последнего запроса ipv6 адресов, то он просигналит что есть ещё
если очередь ipv6 адресов пуста, то поведение по умолчанию - запросить ipv4 адреса для текущей srv записи и повторить алгоритм с ipv4 для текущей srv записи.
если ipv4 уже спрашивали, то попробуем перейти к следующей srv записи и повторить алгоритм для этой записи
если srv записи закончились, то сигналим о неудаче.
т.е. цепочка получается такая: все адреса ipv6 -> все адреса ipv4 -> повторяем сначала для следующей srv
Требования к новому алгоритму.
rfc6555 говорит, что чтоб всё было в шоколаде надо коннектиться к ipv4 не дожидаясь успешного коннекта к ipv6, но желательно с небольшой задержкой дабы не нагружать ни одну из сторон.
вопросы, которые надо решить:
1) мы резолвим ipv4 и ipv6 записи одновременно для текущей srv или по мере необходимости? (после небольшой задержки по запросу из bsocket)
2) каким образом мы перешиваем ipv4 и ipv6 записи? как вариант просто через 1 (v6 v4 v6 v4...), но вероятно это неэффективно. вероятно bsocket должен говорить какой следующий адрес он желает. например, первая запись ipv6 и первая запись ipv4 ссылаются на один и тот же хост, который в данный момент находится в дауне, коннекты могут профейлиться с разным таймаутом, тогда для следующей попытки может так получиться что мы вначале пробуем ipv4 а потом ipv6. не уверен на сколько это правильно.
3) bsocket не рассчитан на одновременный коннект. у него есть только один мембер соответствующий сокету. каким образом мы это обойдем? как вариант создать отдельный класс тцпконнектор, который сам будет управлять dnsом и отдавать подключенный сокет обратно в bsocket
[13:03:28] <rion☫> видимо я написал слишком много букаф ))
[13:05:30] <rion☫> .invite Tehnick
[13:05:32] <iSida> rion☫: I seen some peoples with this nick. Get more info!
[13:06:14] <rion☫> iSida: ну давай больше инфы, че молчишь?
[13:06:22] <iSida> rion☫: I'm unable to express myself.
[13:07:03] <rion☫> .invite Tehnick_
[13:07:03] <iSida> rion☫: I seen some peoples with this nick. Get more info!
[13:07:12] <Леван> *WRITE*
[13:07:18] <rion☫> .invite Tehnick_ 1
[13:07:18] <iSida> rion☫: I don'n know Tehnick_ 1
[13:07:26] <rion☫> .invite Tehnick_ всех
[13:07:26] <iSida> rion☫: I don'n know Tehnick_ всех
[13:07:57] <rion☫> .invite all Tehnicks here right now!! motherfucker!!!
[13:07:57] <iSida> rion☫: I don'n know all Tehnicks here right now!! motherfucker!!!
[13:08:29] <rion☫> don'n - эт чё йогурт?
[13:08:57] <rion☫> .help штмшеу
[13:09:00] <iSida> rion☫: "штмшеу" not found
[13:09:03] <rion☫> .help invite
[13:09:06] <iSida> rion☫: Invite. Access level: 4 [participant/member]. Plugin invite. Invite to conference.
invite nick|jid
[reason]
[13:10:00] <rion☫> .help wtf
[13:10:05] <iSida> rion☫: Wtf. Access level: 0 [no limit]. Plugin wtf. Show definition.
[13:16:08] <iSida> я не мазафака... я фаза...
[13:16:21] mrDoctorWho вошёл(а) в комнату
[13:18:43] <rion☫> mrDoctorWho: а ты как решаешь проблемы ipv6?
[13:19:16] <mrDoctorWho> rion☫: использую ipv4
[13:24:03] [Alex] вошёл(а) в комнату
[13:24:29] [Alex] вышел(а) из комнаты
[13:25:14] [Alex] вошёл(а) в комнату
[13:25:26] [Alex] вышел(а) из комнаты
[13:25:48] <KukuRuzo> rion☫: есть винапишная функция WSCEnumProtocols которая вроде как может определить наличие протокола, т.к. проблема задержек наблюдается в основном в винде, наверное её можно заюзать перед подключением
[13:26:42] [Alex] вошёл(а) в комнату
[13:27:55] <KukuRuzo> Хотя проблема наверное как раз в том что протокол будет
[13:28:58] <rion☫> дык да
[13:29:34] <KukuRuzo> rion☫: есть еще
ULONG WINAPI GetAdaptersAddresses(
  _In_     ULONG Family,
  _In_     ULONG Flags,
  _In_     PVOID Reserved,
  _Inout_  PIP_ADAPTER_ADDRESSES AdapterAddresses,
  _Inout_  PULONG SizePointer
);
[13:30:15] <KukuRuzo> Family - AF_INET6 - Return only IPv6 addresses associated with adapters with IPv6 enabled.
[13:33:35] Nirdosh_ вышел(а) из комнаты
[13:35:29] [Alex] вышел(а) из комнаты
[13:36:04] Nirdosh_ вошёл(а) в комнату
[13:37:21] <KukuRuzo> Хотя и тут скорее всего функция адреса вернёт
[13:38:50] <rion☫> QNetworkInterface::addressEntries ()
[13:45:22] <KukuRuzo> rion☫: может просто сделать возможность отключать ипв6 для резолвера во время работы? И в пси запилить чекбокс в настройках
[13:46:14] <rion☫> не
[13:46:23] <rion☫> ipv4 должен умереть
[13:49:14] <KukuRuzo> Тогда запилить настраиваемый приоритет, а в пси - комбобокс в настройках, и там выбирать какой протокол приоритетнее )
[13:49:38] <KukuRuzo> А по умолчанию да сделать ипв6
[13:49:42] <rion☫> ipv6 приоритетнее.
[13:49:58] <rion☫> не надо компобоксов. надо реализовать rfc6555
[14:09:28] <KukuRuzo> rion☫: ну они пишут что огнелис и гуглохром имеют задержку установки коннекта в 300мс
[14:12:10] zet вошёл(а) в комнату
[14:13:25] <zet> KukuRuzo: слушай, так правильно сконфигурил qca? http://pastebin.com/sBjPHU4u
[14:13:28] <iSida> Заголовок: [C++] zet - Pastebin.com
[14:14:12] <KukuRuzo> zet: вот этот плагин не хочешь? qca-gnupg off
[14:14:31] <zet> KukuRuzo: а может тогда все плагины включить?
[14:14:41] <KukuRuzo> zet: все может не собрать
[14:15:55] <KukuRuzo> zet: там вот такой флаг надо добавить -DBUILD_PLUGINS=ossl;gnupg и плагины через точку с запятой указать
[14:16:18] <KukuRuzo> Ну и GnuPG нужен, и должен быть в PATH
[14:17:06] <KukuRuzo> zet: а так всё норм, вроде бы
[14:17:08] <zet> KukuRuzo: а остальные ключи правильно?
» C:\build\qca>cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=%QCADIR% -DCMAKE_BUILD_TYPE="Debug Release" -DBUILD_PLUGINS=ossl;gnupg
[14:17:38] <zet> KukuRuzo: я в этом ключе не уверен -DCMAKE_BUILD_TYPE="Debug Release"
[14:18:35] <KukuRuzo> zet: он может принимать эти значения:
CMAKE_BUILD_TYPE
    A variable which controls the type of build when using a single-configuration generator like the Makefile generator. CMake will create by default the following variables when using a single-configuration generator:
    None (CMAKE_C_FLAGS or CMAKE_CXX_FLAGS used)
    Debug (CMAKE_C_FLAGS_DEBUG or CMAKE_CXX_FLAGS_DEBUG)
    Release (CMAKE_C_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELEASE)
    RelWithDebInfo (CMAKE_C_FLAGS_RELWITHDEBINFO or CMAKE_CXX_FLAGS_RELWITHDEBINFO
    MinSizeRel (CMAKE_C_FLAGS_MINSIZEREL or CMAKE_CXX_FLAGS_MINSIZEREL)
[14:19:29] <zet> KukuRuzo: значения указываются через пробел?
[14:19:35] <KukuRuzo> zet: я дебаг-версию за второй прогон собирал
[14:19:51] <zet> KukuRuzo: а по дефолту, без этого ключа вроде релиз собирается
[14:21:04] <KukuRuzo> zet: используй мой батник (я вчера показывал), он собирёт каждую версию в свой каталог, только пути свои пропиши
[14:22:41] <KukuRuzo> zet: http://pastebin.com/LrEEBq06
[14:22:42] <iSida> Заголовок: [Winbatch] set QMAKESPEC=win32-g++ set /p ARCHTYPE=Do you want to build qca x86_64 versi - Pastebin.com
[14:25:31] <KukuRuzo> zet: и после отработки скрипта, готовая сборка будет находиться в папке build_i386_Release\i386_Release для релиза х86
[14:25:32] <zet> KukuRuzo: а почему 37 строка заканчивается на « . . » ??
[14:25:42] [Alex] вошёл(а) в комнату
[14:26:22] <KukuRuzo> zet: мы переходим в каталог build_i386_Release (к примеру) и запускаем симейк из родительского каталога который обозначается как ..
[14:26:33] <zet> KukuRuzo: а, понял
[14:27:14] <KukuRuzo> И вся сборка не трогает файлы родительского каталога (не сорит), что позволяет одновременно собирать разные версии без очистки
[14:27:50] <zet> KukuRuzo: я понял
[14:28:00] <zet> KukuRuzo:
» C:\build\qca>cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=%QCADIR% -DCMAKE_
» BUILD_TYPE=Release -DBUILD_PLUGINS=ossl;gnupg
» -- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
» -- Checking for certstore..
» -- Using built in certstore.
» -- certstore path: C:/build/qca/certs/rootcerts.pem
» -- mlock(2) does not take a void *
» CMake Warning at plugins/qca-ossl/CMakeLists.txt:18 (message):
»   qca-ossl will be compiled without MD2 digest algorithm support
»
»
»
» Plugins:
»   qca-botan off
»   qca-cyrus-sasl off
»   qca-gcrypt off
»   qca-gnupg on
»   qca-logger off
»   qca-nss off
»   qca-ossl on
»   qca-pkcs11 off
»   qca-softstore off
»
» QCA prefix is C:/Qt/QCA
» Plugins will be installed to C:/Qt/QCA/lib/qca/crypto
» Binary will be installed to C:/Qt/QCA/bin
» Library will be installed to C:/Qt/QCA/lib
» Feature file will be installed to C:/Qt/QCA/mkspecs/features
» Public headers will be installed to C:/Qt/QCA/include
» Private headers will be installed to C:/Qt/QCA/include
» Documentation will be installed to C:/Qt/QCA/share/doc/qca/html
» Man page will be installed to C:/Qt/QCA/share/man
» Pkg-config file will be installed to C:/Qt/QCA/lib/pkgconfig
»
» -- Configuring done
» -- Generating done
» -- Build files have been written to: C:/build/qca
[14:28:11] <zet> KukuRuzo: вроде нормально?
[14:28:25] <KukuRuzo> Да
[14:29:13] <zet> KukuRuzo: а эта хрень нам не нужна?
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
[14:29:48] <KukuRuzo> zet: это таурус знает, он скрипты симейка для куца писал
[14:31:19] <KukuRuzo> Но раз симейк сказал что можно собирать, значит всё ок
[14:31:28] <rion☫> Doxygen нужен чтоб генерировать документацию из исходников
[14:31:33] <rion☫> нафиг не надо в общем
[14:32:46] <KukuRuzo> Поехал я на работу )
[14:32:51] KukuRuzo вышел(а) из комнаты
[14:33:11] <zet> Ок
[14:40:18] <zet> Красота:
» [ 95%] Built target ssltest
» [ 96%] Built target sslservtest
» [ 98%] Built target tlssocket
» [ 99%] Built target mozcerts
» [100%] Built target qcatool
» Install the project...
» -- Install configuration: "Release"
» -- Installing: C:/Qt/QCA/certs/rootcerts.pem
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qcaprovider.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/QtCrypto
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_export.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_support.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_tools.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_core.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_textfilter.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_basic.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_publickey.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_cert.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_keystore.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_securelayer.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_securemessage.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qca_version.h
» -- Installing: C:/Qt/QCA/include/QtCrypto/qpipe.h
» -- Installing: C:/Qt/QCA/mkspecs/features/crypto.prf
» -- Installing: C:/Qt/QCA/share/man/man1/qcatool.1
» -- Installing: C:/Qt/QCA/lib/libqca.dll.a
» -- Installing: C:/Qt/QCA/bin/libqca.dll
» -- Installing: C:/Qt/QCA/lib/qca/crypto/libqca-gnupg.dll
» -- Installing: C:/Qt/QCA/lib/qca/crypto/libqca-ossl.dll
» -- Installing: C:/Qt/QCA/bin/mozcerts.exe
» -- Installing: C:/Qt/QCA/bin/qcatool.exe
[14:42:12] <rion☫> хм, общественность не заинтересована в решении ipv6 проблемы труъ вэй. ладно. как-нибудь своими силами )
[14:49:04] <zet> rion☫: а как версию qca посмотреть?
[14:49:26] <zet> Или это всё та же древняя версия, только пропатченная?
[14:49:35] <rion☫> та же вроде
[14:51:09] <zet> rion☫: может тогда дату сборки из гита указать? 2c69c72     2014-02-10
[14:51:19] <zet> Дата последнего коммита
[14:54:12] <rion☫> указать где?
[14:54:47] <zet> rion☫: ну я архив создаю с готовой версией и закидываю на сурзфорж
[14:54:59] <zet> И в вики пишу инструкцию
[14:57:20] rion☫ вышел(а) из комнаты
[15:04:06] Neustradamus вошёл(а) в комнату
[15:06:19] Леван вышел(а) из комнаты
[15:46:07] mrDoctorWho вышел(а) из комнаты: Replaced by new connection
[15:46:07] mrDoctorWho вошёл(а) в комнату
[16:03:41] mrDoctorWho вышел(а) из комнаты: Replaced by new connection
[16:03:42] mrDoctorWho вошёл(а) в комнату
[16:06:27] [Alex] вышел(а) из комнаты
[16:12:08] Hugin вошёл(а) в комнату
[16:13:16] zet вышел(а) из комнаты
[16:27:29] <iSida> RSS: Новости для Psi+ downloads
• /MS-Windows/Dev/QCA-git-20140210-win32.7z
/MS-Windows/Dev/QCA-git-20140210-win32.7z
http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/QCA-git-20140210-win32.7z/download
[16:27:29] Neustradamus вышел(а) из комнаты
[17:08:48] proxy_m вошёл(а) в комнату
[17:12:40] Hugin вышел(а) из комнаты
[17:13:12] satrap вошёл(а) в комнату
[17:16:07] Торчёк вышел(а) из комнаты
[17:18:39] Торчёк вошёл(а) в комнату
[17:20:47] satrap вышел(а) из комнаты
[17:22:04] satrap вошёл(а) в комнату
[17:24:21] Торчёк вышел(а) из комнаты
[17:24:32] Торчёк вошёл(а) в комнату
[17:26:37] Торчёк вышел(а) из комнаты
[17:28:18] Торчёк вошёл(а) в комнату
[17:30:55] Торчёк вышел(а) из комнаты
[17:32:41] Торчёк вошёл(а) в комнату
[17:47:36] Dealer_WeARE вышел(а) из комнаты
[17:50:57] zet вошёл(а) в комнату
[18:00:05] zet вышел(а) из комнаты
[18:01:49] Nirdosh_ вышел(а) из комнаты
[18:09:49] Торчёк вышел(а) из комнаты
[18:11:27] Торчёк вошёл(а) в комнату
[18:28:12] ПухнастЭ БТРкО вышел(а) из комнаты
[18:29:38] ПухнастЭ БТРкО вошёл(а) в комнату
[18:32:11] Qwеst вошёл(а) в комнату
[18:33:04] satrap вышел(а) из комнаты: Replaced by new connection
[18:33:04] satrap вошёл(а) в комнату
[18:44:12] Nirdosh_ вошёл(а) в комнату
[18:46:03] Торчёк вошёл(а) в комнату
[18:46:49] ivan1986 вышел(а) из комнаты
[19:02:37] KukuRuzo вошёл(а) в комнату
[19:16:26] Qwеst вышел(а) из комнаты
[19:28:56] taurus вошёл(а) в комнату
[19:47:48] rion☫ вошёл(а) в комнату
[19:48:06] <rion☫> ой, меня Алисья вспомнила :)
[19:50:09] <taurus> аааа )))) и?
[19:50:32] <rion☫> хочет пообщаться. даже не знаю что ей ответить ))
[19:51:04] <taurus> скажи да, поедешь в гейропу, будешь там жить :)
[19:52:40] <KukuRuzo> rion☫: а если так, получаешь список адресов, сортируешь чтобы первыми были ипв4, с минимальным интервалом по времени ждёшь от каждого по очереди коннекта, если удачно то останавливаешься, если все адреса кончились начинаешь заново но интервал увеличиваешь и так до 1мин (как сейчас) ?
[19:52:42] <iSida> KukuRuzo: У rion☫ время 21:52:19, 18.Июн'2014, Ср, GMT+6
[19:53:12] <KukuRuzo> iSida: ?
[19:53:24] <iSida> KukuRuzo: Я не знаю, к какой цели я иду.
[19:55:32] <rion☫> KukuRuzo: алгоритм happy eyeballs говорит что мы должны отдать приоритет ipv6. не ждать конца коннекта и подключаться к ipv4 а потом использовать первое что подключится
[19:56:10] <KukuRuzo> До одной минуты это имеется ввиду общее время за все попытки
[19:57:10] <KukuRuzo> Ну или так
[19:59:13] <rion☫> у меня пока такой алгоритм в голове.
коннектим ipv6
минимальная задержка
коннектим ipv4
ждем пока один провалится или подключится
если подключился - УСПЕХ, СТОП, мы подключились
если профейлился, для ipv4 или ipv6 берем следующий адрес из очереди, пока второй всё ещё пытается подключиться.
попытки подключения оставляем на усмотрение вызывающей стороны.
[20:06:10] <Hamper_> приоритет ipv6/ipv4 лучше настраиваемым сделать, иногда ipv6 тоннели сильно тормозят относительно ipv4
[20:07:07] <Hamper_> хотя я не знаю о чем вы точно )
[20:08:00] <rion☫> Hamper_: надо просто вырубить туннель и подключить нормальный ipv6 )
[20:08:21] <Hamper_> не всегда есть нормальный ipv6
[20:08:27] <rion☫> хотя если туннель будет овсем сильно тормозить, то вероятно ipv4 всё равно подключится быстрее
[20:08:38] <Hamper_> а еще есть псевдо ipv6 например cjdns
[20:09:53] <taurus> а нас есть свой qjdns
[20:11:52] <KukuRuzo> rion☫: мне нравится, а можно сделать переменную задержку и:
- один адрес коннектим
- остальные в списке по циклу с возрастанием задержки после окончания списка
- приконнектились - хорошо
- нет смотрим не достиго ли общее время заданного максимума
- достигло - прекращаем попытки
[20:12:42] <Hamper_> taurus: это не то ) cjdns это протокол, сеть Hyperboria на нем работает
[20:12:46] <Hamper_> меш сети
[20:12:59] <Hamper_> http://cjdroute.net/
[20:13:02] <iSida> Заголовок: Cjdroute.net Hyperboria ex CJDNS.RU
[20:17:40] <rion☫> KukuRuzo: я не понимаю зачем увеличивать задержки. попытки переподключения это более верхнеуровневая задача
[20:18:12] <KukuRuzo> rion☫: а вдруг задержки "пинга" больше минимальной?
[20:18:13] <iSida> KukuRuzo: Пинг от rion☫ 0.098 сек.
[20:19:01] <rion☫> поясни
[20:19:22] <KukuRuzo> rion☫: я просто предлагал рвать соедиение по "неосновным" адресам после задержки
[20:19:57] <rion☫> любые коннекты *inprogress* обрываются если появился хоть один завершенный
[20:20:14] <rion☫> именно это предлагает rfc6555
[20:22:02] <KukuRuzo> rion☫: т.е мы плодим кучу коннектов одновременно?
[20:23:39] <rion☫> не кучу. всего 2
[20:23:50] <rion☫> один для ipv4 и второй для ipv6
[20:24:03] <rion☫> причем ipv6 начинаем первым
[20:24:07] <KukuRuzo> rion☫: а после задержки 2й меняем? А первый остаётся верно?
[20:25:09] <rion☫> короче коннектим ipv6. не ждем завершения подключения. ждем 300мс. коннектим ipv4. дальше ждем что из них первое подключится
[20:25:32] <KukuRuzo> rion☫: а если ничего? А адреса еще есть
[20:26:32] <KukuRuzo> Меняем пару?
[20:26:44] <rion☫> вот тут вопрос. по идее если любой из этих двух профейлился, то мы можем взять следующий адрес из соответствующей очереди.
т.е. если профейлился ipv6 а ipv4 всё ещё коннектится, то берем следующий ipv6 адрес
[20:26:58] <rion☫> но я не уверен на сколько это правильно
[20:27:16] <KukuRuzo> rion☫: вот я про эту задержку говорил, когда нужно сменить адрес
[20:27:24] <rion☫> пар может и не быть вовсе или каких-то адрес будет больше чем других
[20:27:57] <rion☫> а зачем тут задержка?
[20:28:36] Леван вошёл(а) в комнату
[20:29:05] <rion☫> по идее нам надо скорее подключиться уже хоть как-то. а задержки тут - зло
[20:29:05] <KukuRuzo> rion☫: а по истечении какого времени будет адрес изменяться при фейле?
[20:29:07] <iSida> KukuRuzo: У rion☫ время 22:28:45, 18.Июн'2014, Ср, GMT+6
[20:29:08] <iSida> KukuRuzo: Твоё время: 19:29:07, 18.Июн'2014, Ср, GMT+3
[20:29:46] <KukuRuzo> Чудит однако )
[20:29:50] <rion☫> KukuRuzo: при фейле мы сразу берем следующий
[20:30:07] <rion☫> если он есть
[20:31:06] <KukuRuzo> rion☫: понятно, я просто предлагал не ждать фейла, и пытаться другие адреса, но так наверное плохо
[20:31:26] <rion☫> вообще rfc6555 описывает до кучи попытки подключения на каждый ip. но я не думаю что мы этого хотим. лучше скорее попробовать следующий адреса. а попытки переподключения оставить более верхнему уровню
[20:32:21] <rion☫> если мы совсем не будем ждать фейла/успеха мы наплодим много незавершенных подключений. это плохо и для клиента и для сервера тем более
[20:33:32] <KukuRuzo> rion☫: ну я думал, что по истечении времени просто рвать соединение, и менять один из членов пары (попеременно)
[20:34:17] <rion☫> разрыв по таймауту и так есть. только я не уверен где. скорее всего в ОС
[20:34:35] <rion☫> вероятно мы можем как-то его контролировать
[20:34:44] <rion☫> надо глянуть опции sockopt
[20:35:42] <rion☫> гугль говорит SO_RCVTIMEO
[20:37:21] <rion☫> хм или нет там таймаута
[20:37:30] <rion☫> надо будет глянуть
[20:37:39] <KukuRuzo> rion☫: вот мы ставим таймаут минимальным для нас, а потом когда адреса кончились мы его увеличиваем и заново коннектим, кол-во попыток делаем например 4
[20:38:14] <KukuRuzo> Или когда он досиг заданного максимума
[20:38:31] <rion☫> это более верхнеуровневая задача
[20:39:51] <KukuRuzo> rion☫: т.е. её пси выполняет?
[20:41:50] O01eg вошёл(а) в комнату
[20:41:57] <rion☫> да
[20:42:02] rion☫ вышел(а) из комнаты
[21:18:37] KukuRuzo вышел(а) из комнаты
[21:37:53] Леван вышел(а) из комнаты: Logged out
[21:41:55] rion☫ вошёл(а) в комнату
[21:45:52] Торчёк вышел(а) из комнаты
[22:45:57] satrap вышел(а) из комнаты: Не балуйтесь
[22:51:15] Hamper_ вышел(а) из комнаты: Replaced by new connection
[22:51:17] Hamper_ вошёл(а) в комнату
[23:02:40] rion☫ вышел(а) из комнаты
[23:43:37] mrDoctorWho вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!