Для прикладного сервера откатил чтение из сокета к старому методу без цикла, таймаута и размера. Т.к. в хроме очень странный баг, который я не смог победить. Вычитываем из запроса пустые дд, и не понимает что отправить. маршрутизатор в таком случае отдает корень.
Добавил метаданные в запрос и ответ - ид запроса, для диагностики.
Для прикладного сервера добавил заголовки:
content-leght, который расчитывает размер контента
connection: close. Что бы браузеры не пытались в keep-alive.