+ Написать отдельную функцию, которая добавляет сообщение в исходящий буфер для заданного клиента/узла + Расширение сервера до распределенного взаимодействия. Открыть еще один порт для входящих соед. от других узлов. Разработать структуру, опис. соединение с др. узлами. Написать функцию, загружающую список адресов узлов,выполняющую подключение к узлам и обновляющую список. Написать функцию работы с соединениями с другими узлами. - Регрессионные тесты - Список узлов. Разработать структуру элемента списка, функции для работы со списком, которые будут применяться клиентом и узлом. - Реализовать поддержку туннелей, как в SSH - Возле каждой функции в коде сделать ее описание. Делать описание для будущих функций - Сделать обработку ошибок -(+--) Упорядочить названия идентификаторов - Добавить поддержку IPv6 -(+--) Реализовать обработку тайм-аутов - Счетчики трафика входящего и исходящего, активных пользователей - Привести в соответствие требованиям GNU coding standards( к приемлемым требованиям) - Адресные пространства + Удалить понятие "название сети" из протокола и кода.Инкрементировать версию протокола + Добавить в клиентскую библиотеку еще одну callback-функцию, сообщающую о неуспешной попытке создания канала./Разобраться с неконсистентностью освобождения ресурсов в (close_channel,close_connection,establish_data_connection)/ - Соединения между узлами шифруются при помощи ADH (не нужно?) + Все входящие соединения узла через один TCP порт, а не 3 - Очередь задач (соединиться с узлом и т.д) - Балансировка нагрузки между узлами (Узлы обмениваются количеством подключенных юзеров, потом самые нагруженные узлы посылают клиентам команду "сменить узел" с отсортированным списком N наименее нагруженных узлов) - автоматическая регистрация аккаунтов - сайт, багтрекер, VCS, форум, почтовая рассылка + сохранение открытых ключей контактов и их сопоставление при каждом сеансе - список контактов, кому разрешено видеть, когда абонент в сети + хранение списка узлов pica-node в базе sqlite + autotools - хранение недоставленных сообщений на стороне клиента, в базе sqlite, пока абонент не появится в сети - история сообщений, с опциональным шифрованием + проверка сертификата клиента узлом (узел должен иметь копию корневого сертификата) - переводы интерфейса - документация пользователя - текст лицензий (OpenSSL, iniparser, pica pica, Qt) в окошке about и файлах LICENSE - собрать и протестировать под Windows (32 и 64 бита) - аудио-видео звонки (ffmpeg) - передача файлов - возможность прямого P2P соединения между клиентами, клиент может выбирать предпочитаемый вариант (запретить P2P / использовать по возможности) - периодическая смена CA ключей и уничтожение старого приватного ключа, публикация списков выданных сертификатов для каждого ключа (???) + конфигурация узла (конфиг файл, опции командной строки, дефолтные значения) - пакеты для разных дистрибутивов (ebuild, deb, rpm)