Jiang Xin <worldhello.net@xxxxxxxxx> writes: > From: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> > > When commit b236752a (Support remote archive from all smart transports, > 2009-12-09) added "remote archive" support for "smart transports", it > was for transport that supports the ".connect" method. The > "connect_helper()" function protected itself from getting called for a > transport without the method before calling process_connect_service(), OK. > which did not work with such a transport. How about 'which only worked with the ".connect" method.' ? > > Later, commit edc9caf7 (transport-helper: introduce stateless-connect, > 2018-03-15) added a way for a transport without the ".connect" method > to establish a "stateless" connection in protocol-v2, which s/which/where > process_connect_service() was taught to handle the "stateless" > connection, I think using 'the ".stateless_connect" method' is more consistent with the rest of this text. > making the old safety valve in its caller that insisted > that ".connect" method must be defined too strict, and forgot to loosen > it. I think just "...making the old protection too strict. But edc9caf7 forgot to adjust this protection accordingly." is simpler to read. > Remove the restriction in the "connect_helper()" function and give the > function "process_connect_service()" the opportunity to establish a > connection using ".connect" or ".stateless_connect" for protocol v2. So > we can connect with a stateless-rpc and do something useful. E.g., in a > later commit, implements remote archive for a repository over HTTP > protocol. > > Helped-by: Junio C Hamano <gitster@xxxxxxxxx> > Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> > --- > transport-helper.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/transport-helper.c b/transport-helper.c > index 49811ef176..2e127d24a5 100644 > --- a/transport-helper.c > +++ b/transport-helper.c > @@ -662,8 +662,6 @@ static int connect_helper(struct transport *transport, const char *name, > > /* Get_helper so connect is inited. */ > get_helper(transport); > - if (!data->connect) > - die(_("operation not supported by protocol")); Should we still terminate early here if both data->connect and data->stateless_connect are not truthy? It would save a few CPU cycles, but even better, remain true to the the original intent of the code. Maybe there was a really good reason to terminate early here that we're not aware of? But also, what about the case where both are enabled? Should we print an error message? (Maybe this concern is outside the scope of this series?) > if (!process_connect_service(transport, name, exec)) > die(_("can't connect to subservice %s"), name); > -- > 2.41.0.232.g2f6f0bca4f.agit.8.0.4.dev