Thread (48 messages) flat view 48 messages, 3 authors, 2016-06-15

Re: [PATCH/RFC 07/11] run-command: support input-fd

From: Erik Faye-Lund <hidden>
Date: 2016-06-15 22:47:51

On Fri, Nov 27, 2009 at 9:14 PM, Johannes Sixt [off-list ref] wrote:
On Freitag, 27. November 2009, Erik Faye-Lund wrote:
quoted
What do you find confusing about it? The idea is to use a provided
bi-directional fd instead of a pipe if async->out is non-zero. The
currently defined rules for async is that async->out must be zero
(since the structure should be zero-initialized).
It is just the code structure that is confusing. It should be

       if (async->out) {
               /* fd was provided */
               do all that is needed in this case
       } else {
               /* fd was requested */
               do all for this other case
       }
       /* nothing to do anymore here */

(Of course, this should only replace the part that is cited above, not the
whole function.)
OK. I've reimplemented the change for the next round, taking this into account.
quoted
Indeed it does. Do we want to extend it to support a set of
unidirectional channels instead?
Yes, I think so. We could pass a regular int fd[2] array around with the clear
definition that both can be closed independently, i.e. one must be a dup() of
the other. struct async would also have such an array.
OK. This has been included for the next round. Instead of an array,
I've tried to be consistent with start_command, and used two
variables, "in" and "out".
Speaking of dup(): The underlying function is DuplicateHandle(), and its
documentation says:

"You should not use DuplicateHandle to duplicate handles to the following
objects: ... o Sockets. ... use WSADuplicateSocket."

But then the docs of WSADuplicateSocket() talk only about duplicating a socket
to a separate process. Perhaps DuplicateHandle() of a socket within the same
process Just Works?
It seems the rest of the Windows-world depends on DuplicateHandle()
working for sockets, so I'm not too worried. I can't find anything
documentation(1) for _dup, and I don't think we have our own
dup()-implementation.

(1) http://msdn.microsoft.com/en-us/library/8syseb29(VS.71).aspx

-- 
Erik "kusma" Faye-Lund
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help