I have a TLS Server and TLS Client which is running on the top of *Edge Triggered EPOLL* and *Non Blocking Sockets.*
Client and server is doing following operations 1. Client -> Connect to TLS Server. (SSL_CTX_new -> SSL_new -> SSL_set_fd) 2. Client -> Set modes (SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER, SSL_MODE_AUTO_RETRY) 3. Server -> Sends streaming data to the connected clients. 4. Client -> Read data whenever EPOLLIN occurs. 5. Server -> When it fails to send data (Client is slow to read), stores data into local buffer and waits for EPOLLOUT to occur. 6. Server -> When EPOLLOUT occurs for particular socket it sends the same data which was failed previously. Problem that I am seeing is even after the client is successfully reading all the data from Kernel Buffer, Event EPOLLOUT is not invoked in Server Side (In Server Buffered data is ready for writing to clients). EPOLLOUT is invoked only one time in Server side, when the SSL_WRITE fails for first time. Is there any specific way to handle SSL_READ and SSL_WRITE over Edge Triggered EPOLL ? I am very new to openssl. Please help. -- Harikrishnan R -- Connect with Market Simplified on Linked-in <http://www.linkedin.com/company/market-simplified-inc> | Facebook <https://www.facebook.com/MarketSimplified> | Twitter <https://twitter.com/MarketGoMobile> | Google Plus <https://plus.google.com/114913942441116940871/> | Pinterest <http://pinterest.com/marketGoMobile/mobility-in-bfsi> -------------------------------------------------------------------------------- Confidentiality Statement: This message is intended only for the use of the Addressee and may contain information that is PRIVILEDGED and CONFIDENTIAL: If you are not the intended recipient, dissemination of this communication is prohibited. If you have received this communication in error, please erase all copies of the message and its attachments and notify us immediately