Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Сети > AcceptSecurityContext, определить размер данных |
Автор: GremlinProg 17.8.2012, 10:38 |
Дано: имеется клиент-сервер, с защищенным соединением, иногда стадия инициализации защищенного соединения склеивается со штатной работой сервиса, т.е. в буфере клиентского сокета на стороне сервера могут содержаться одновременно и последняя порция данных инициализации SSL и обычные данные клиента, на сервере, в AcceptSecurityContext передается весь блок пришедших данных (параметр pInput->pBuffers->pvBuffer), т.к. размер запрашиваемой порции изначально неизвестен, известен только максимальный размер такого пакета ( SecPkgInfo::cbMaxToken ) Проблема: когда AcceptSecurityContext на сервере успешно завершает инициализацию и переходит в штатный режим, клиент, пославший склеенный первый блок данных висит, т.к. сервер проглотил этот блок при завершении инициализации и ничего не ответил чтобы решить проблему можно просто считывать данные на стадии инициализации побайтно, но это медленно, а если определить размер переваренного блока инициализации ( т.е. число байт, обработанных AcceptSecurityContext во входящем буфере pInput->pBuffers->pvBuffer ), решение будет быстрым кто-нибудь сталкивался с проблемой? |