-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 07/14/2014 07:08 AM, Ashish wrote: > > Lets say many clients are connected to a tcp server and server is > asynchronously sending them certain number of bytes. Now if one of > the clients does never read those bytes (never calls WSARecv), > those bytes get accumulated at server end. After that, surprisingly > other clients too do not receive their bytes. > > This results in never getting uv_write_cb in server code. > > If we disconnect the client (who has stopped calling WSARecv) > things comes on normal track, and we can see other clients > receiving their bytes. > > How can we proactively stop this happening? I mean is there any way > to detect client stopped reads. (So we can proactively disconnect > it before too many bytes get accumulated at server end) >
Streams keep track of the queued bytes (stream->write_queue_size). You should use that to check if the client is not reading or it's too slow at reading and just pause the writing on your end. You can check the number of queued bytes in the write callbacks to decide when to resume sending data. - -- Saúl Ibarra Corretgé bettercallsaghul.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 Comment: Using GnuPG with Icedove - http://www.enigmail.net/ iQIcBAEBAgAGBQJTw4dZAAoJEEEOVVOum8BZQzMP/A7FV/Qz+G5Cim82TqZM2EcF hjO6KWU7VarHjWJtaqyGxObge59UH9Dh7nSxLu9KIC8gat0YxB0O80bEu5NAh91Z dJDoFVYB53JTJ+8+eXqEumRKHVM9TOiNSLRkKH/IhwKxT6Z9ZUonHBN8zAVhs7jC WlP+7enJ+7emLdih93icY6lSLWpg91pQXRzqYOdnzMdMYkgMiZbrQmSDLGfe2KCC 6fzwslJBgPpoBcjs4FdpvBqF5JUguDGBoN5LJq5G800WhYCqsYQ+yaTlbIxlpqUM KorZxmKkQacQy45CN/Kr4jNv/8YPgSDTIbXG9W9uDQjqWLyCrXCAaTxKnEKJrwN8 jfoEslYlnLivYPkhPSJJvQ8HCutb37I4Md+8u7TmOnL1XeQRHoC+cRybe4C6mBAP cec+5vFoGZkYMEO6Cxc6jfGAPx7+3iSY5ZtzFUkloOk3VZVQPbf6ytPRbdFO6PY0 xweeyU3E8LPHf3fSU4IdEPZ8Unp6fXzMFupXOIHHzw6bTiP0+q1TXASDvPmvdDwp fcYLYvKNXOTFXKJGV1zr5bln4x8rg8P8H8LgLunhSvYm0LPkJ58A9+Sepk7sFjdf 2iF5CC3yaZ6SBLen+aS3CHEcPS1ZrUH9rfNsp4ej4qXkP/Zxf9cUQJmQgfd2oU7b EjTPOfJpR1x9P0nPMTnr =tmf/ -----END PGP SIGNATURE----- -- You received this message because you are subscribed to the Google Groups "libuv" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/libuv. For more options, visit https://groups.google.com/d/optout.
