﻿+ Написать отдельную функцию, которая добавляет сообщение в исходящий буфер для заданного клиента/узла

+ Расширение сервера до распределенного взаимодействия. Открыть еще один порт для входящих соед. от других узлов. Разработать структуру, опис. соединение с др. узлами. Написать функцию, загружающую список адресов узлов,выполняющую подключение к узлам и обновляющую список. Написать функцию работы с соединениями с другими узлами. 

- Регрессионные тесты

- Список узлов. Разработать структуру элемента списка, функции для работы со списком, которые будут применяться клиентом и узлом.

- Реализовать поддержку туннелей, как в 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)


