OpenVPN client (proto tcp4; remote 127.0.0.1 12345)
|
stunnel client (client = yes; accept = 127.0.0.1:12345; connect = 204.48.XX.YY:443)
|
stunnel server (client = no; accept = 204.48.XX.YY:443; connect = 127.0.0.1:12345)
|
openvpn server (proto tcp4; port 12345; local 127.0.0.1) вычесляется фингером
У вас неинициализированный буфер (buffer), что вы отправляете в нем клиенту? - Мусор. И на что надеетесь?
Весь обмен с клиентами происходит в отдельном потоке. На каждого клиента свой поток. Вам нужно вносить новый функционал в функцию serve_client() - она отвечает в сервере за обмен со своим килентом.
Учитывая, что сервер многопоточный и каждый поток работает с одним своим клиентом, то для обмена информацией между разными клиентами вам нужно наладить какой-либо вариант многопоточного взаимодействия.
Так что добавлением 3 строк в код вам не переделать эхо сервер в чат.
Сейчас в сервере каждый поток - независим, он работает только со своим клиентом, на других ему наплевать. Никакого многопоточного взаимодействия тут не реализовано (т.к. не нужно). А вам это нужно.
Я бы на самом деле реализовал это по другому - с помощью неблокирующих сокетов в одном потоке.
Кстати. Реализация функций в вашем шаблоне очень похожа по стилю с примерами из книги Стивенса "Unix. Разработка сетевых приложений". Можете поискать книгу в электронном виде, примеры из нее то же есть на официальном сайте автора. Книга хоть и старая, но вполне актуальна. Рекомендую для освоения сетевого программирования.