git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Git Mailing List <git@vger.kernel.org>
Subject: More on git over HTTP POST
Date: Fri, 01 Aug 2008 14:50:49 -0700	[thread overview]
Message-ID: <48938539.9060003@zytor.com> (raw)

Hi all,

I have investigated a bit what it would take to support git protocol 
(smart transport) over HTTP POST transactions.

The current proxy system is broken, for a very simple reason: it doesn't 
convey information about when the channel should be turned around.

HTTP POST -- or, for that matter, any RPC-style transport, is a half 
duplex transport: only one direction can be active at a time, after 
which the channel has to be explicitly turned around.  The "turning 
around" consists of posting the queued transaction and listening for the 
reply.

Ultimately, it comes down to the following: the transactor needs to be 
given explicit information when the git protocol goes from writing to 
reading (the opposite direction information is obvious.)  I was hoping 
that it would be possible to get this information from snooping the 
protocol, but it doesn't seem to be so lucky.

I started to hack on a variant which would embed a VFS-style interface 
in git itself, looking something like:

struct transactor;

struct transact_ops {
	ssize_t (*read)(struct transactor *, void *, size_t);
	ssize_t (*write)(struct transactor *, const void *, size_t);
	int (*close)(struct transactor *);
};

struct transactor {
	union {
		void *p;
		intptr_t i;
	} u;
	const struct transact_ops *ops;
};

Replacing the usual fd operations with this interface would allow a 
different transactor to see the phase changes explicitly; the 
replacement to use xread() and xwrite() is obvious.

Of course, I started hacking on it and found myself with zero time to 
continue, but I thought I'd post what I had come up with.

	-hpa

             reply	other threads:[~2008-08-01 21:51 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-01 21:50 H. Peter Anvin [this message]
2008-08-02 20:57 ` More on git over HTTP POST Shawn O. Pearce
2008-08-02 21:00   ` Daniel Stenberg
2008-08-02 21:08     ` Shawn O. Pearce
2008-08-02 21:23       ` Petr Baudis
2008-08-02 21:32         ` Shawn O. Pearce
2008-08-03  2:56   ` Shawn O. Pearce
2008-08-03  3:27     ` Junio C Hamano
2008-08-03  3:31       ` Shawn O. Pearce
2008-08-03  3:47       ` H. Peter Anvin
2008-08-03  4:10         ` Shawn O. Pearce
2008-08-03  8:10           ` david
2008-08-03 11:42             ` H. Peter Anvin
2008-08-03 11:29           ` H. Peter Anvin
2008-08-03  3:51     ` H. Peter Anvin
2008-08-03  4:12       ` Shawn O. Pearce
2008-08-03 11:31         ` H. Peter Anvin
2008-08-03  4:01     ` H. Peter Anvin
2008-08-03  6:43     ` Mike Hommey
2008-08-03  7:25     ` [RFC 1/2] Add backdoor options to receive-pack for use in Git-aware CGI Shawn O. Pearce
2008-08-03  7:25       ` [RFC 2/2] Add Git-aware CGI for Git-aware smart HTTP transport Shawn O. Pearce
2008-08-03 11:38         ` H. Peter Anvin
2008-08-03 21:25           ` Shawn O. Pearce
2008-08-03 22:16         ` Junio C Hamano
2008-08-04  3:59           ` Shawn O. Pearce
2008-08-04  9:53             ` Rogan Dawes
2008-08-04 10:08               ` Johannes Schindelin
2008-08-04 10:14                 ` Rogan Dawes
2008-08-04 10:26                   ` Johannes Schindelin
2008-08-04 14:48               ` Shawn O. Pearce
2008-08-04 15:45                 ` Rogan Dawes
2008-08-04 15:59                   ` Shawn O. Pearce
2008-08-04 16:18                     ` Rogan Dawes
2008-08-05  1:03                 ` H. Peter Anvin
2008-08-05  1:24                   ` Shawn O. Pearce
2008-08-05  1:35                     ` H. Peter Anvin
2008-08-05  1:57                       ` Shawn O. Pearce
2008-08-05  2:02                         ` H. Peter Anvin
2008-08-13  1:56                           ` H. Peter Anvin
2008-08-13  2:37                             ` Shawn O. Pearce

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48938539.9060003@zytor.com \
    --to=hpa@zytor.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).