On Fri, Mar 02, 2012 at 16:12:16 -0700, Eric Blake wrote:
On 03/02/2012 01:49 PM, Jiri Denemark wrote:
> A multi-threaded client with event loop may crash if one of its threads
> closes a connection while event loop is in the middle of sending
> keep-alive message (either request or response). The right place for it
> is inside virNetClientIOEventLoop() between poll() and
> virNetClientLock(). We should only close a connection directly if no-one
> is using it and defer the closing to the last user otherwise. So far we
> only did so if the close was initiated by keep-alive timeout.
> ---
> src/rpc/virnetclient.c | 18 ++++--------------
> 1 files changed, 4 insertions(+), 14 deletions(-)
>
> @@ -512,19 +510,11 @@ virNetClientCloseLocked(virNetClientPtr client)
>
> void virNetClientClose(virNetClientPtr client)
> {
> - if (!client)
> - return;
> -
> - virNetClientLock(client);
> - virNetClientCloseLocked(client);
> - virNetClientUnlock(client);
> -}
> -
> -static void
> -virNetClientRequestClose(virNetClientPtr client)
> -{
> VIR_DEBUG("client=%p", client);
The diff that git picked is a bit confusing;
And I explicitly chose --patience diff since it generated better diff, which
represents exactly what I did :-)
but it looks like all you are doing is stating that virNetClientClose
should
do the same thing as virNetClientRequestClose did (which is safer); and now
that they do the same, you don't need two names, so pick the shorter name.
Right.
ACK.
Thanks and pushed.
Jirka