[libvirt] [PATCH 4/4] remote: Detect 'nc' version incompatibilities

Cole Robinson crobinso at redhat.com
Mon Feb 15 17:00:50 UTC 2010


On 02/15/2010 09:47 AM, Daniel P. Berrange wrote:
> On Mon, Feb 15, 2010 at 09:39:31AM -0500, Cole Robinson wrote:
>> On 02/15/2010 06:11 AM, Daniel P. Berrange wrote:
>>> On Fri, Feb 12, 2010 at 10:32:17AM -0500, Cole Robinson wrote:
>>>> This ugly thing is a shell script to detect availability of
>>>> the -q option for 'nc': debian and suse based distros need this
>>>> flag to ensure the remote nc will exit on EOF, so it will go away
>>>> when we close the tunnel. If it doesn't go away, a useless 'nc'
>>>> process is left sitting on the remote host.
>>>>
>>>> Fedora's 'nc' doesn't have this option, so we can't blindly pass -q.
>>>> More info here:
>>>
>>> I don't really like this approach. Shouldn't it be sufficient to
>>> just explicit SIGKILL the ssh client, rather than relying on the
>>> exit-on-EOF behaviour of nc.
>>>
>>
>> kill() helps prevent virt-manager from hanging, but it doesn't address the
>> dangling 'nc' process on the remote host that requires -q. Every connection
>> will leave an 'nc' process hanging.
> 
> It does when I try it. Killing the SSH client connection results in SIGHUP
> for the process running on the  remote host & nc exits on SIGHUP.
> 

Connecting to a debian system? I just tried using the attached patch on top of
latest git (not my patches):

Running virsh --connect URI to a debian lenny system, then invoking 'quit',
leaves 'nc -U' processes running. 'quit' doesn't hang like it does with
current git, but the nc process isn't closed on the remote host.

Any recommendations?

Thanks,
Cole
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Kill-ssh-tunnel.patch
Type: text/x-diff
Size: 1344 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20100215/1a3cdf52/attachment-0001.bin>


More information about the libvir-list mailing list