[Win32utils-devel] Asynchronous Pipe::Server problems
Daniel Berger
djberg96 at gmail.com
Tue May 20 07:45:46 EDT 2008
Heesob Park wrote:
> 2008/5/20 Daniel Berger <djberg96 at gmail.com>:
>> Heesob Park wrote:
>>> Hi,
>>>
>>> 2008/5/20 Daniel Berger <djberg96 at gmail.com>:
>>>> Hi all,
>>>>
> <snip>
>> However, I've botched something else up. I started up the
>> test_async_server.rb program in one terminal, then ran the
>> test_client_async.rb program. The first time it works on the client side:
>>
>> # Client side
>> Connected...
>> write_complete
>> pipe client is running
>> read_complete
>> Got [Ruby rocks!] back from server
>>
>> Though I see nothing on the server side.
>>
>> The second time I run the client it just hangs.
>>
>> I fixed something in the Pipe#wait method (so update from CVS) but that
>> didn't solve it.
>>
>> Any ideas?
>>
> Here is the patch for pipe.rb and server.rb:
<snip>
Excellent, thanks!
> --- win32-pipe/lib/win32/pipe.rb 2008-05-20 14:10:30.000000000 +0900
> +++ pipe.rb 2008-05-20 17:07:53.000000000 +0900
> @@ -62,7 +61,7 @@
> #
> def close
> DisconnectNamedPipe(@pipe)
> - CloseHandle(@pipe)
> + # CloseHandle(@pipe)
> end
I can see why we don't do this now, but I wonder if we should do this in
a finalizer, along with a call to FlushFileBuffers(). All the example
code I see closes the handle. Perhaps I'm being overly paranoid about
handle leaks, though.
I'm also thinking about adding a block form that would automatically
ensure a call to Pipe#close.
What do you think?
Regards,
Dan
More information about the win32utils-devel
mailing list