There's also the option of using a 'temporary' name (e.g. DraftWebDAVChannel or something) until we're convinced that it's the right approach and then rename it to a more official name and advertise it as stable... Just an idea. Jonathon On Wed, 2014-02-26 at 17:47 +0100, Marc-André Lureau wrote: > Hey, > > ping! still looking for review/ack, > > I would like this webdav channel to be part of the specified protocol. > I could do without, and just name a port channel with my own data, but > I prefer to have a proper registered channel, so it is documented > officially as part of Spice. > > Although some channels are optionnal, some are mandatory, some must be > unique, there is something that we haven't exploited so far. We could > deprecate channels and replace them with newer versions or different > channels (while keeping same protocol version). Example, if we come to > the conclusion that multiplexing requests in one channel isn't a good > idea, we could deprecate WebDAVChannel and make WebDAVChannel2 appears > (instead or both available for compatibility). In the same vein, > WebDAV could be replaced by SFTP or anything else. Even more, they > could coexist, so a client could be free to choose (this is very much > hypothetical, I don't think that should ever happen). > > This is all to say that adding a channel, such as webdav, shouldn't > limit our future development, if somehow it doesn't work as expected > or other reasons. > > cheers > > > On Sun, Jan 12, 2014 at 6:29 PM, Marc-André Lureau > <marcandre.lureau@xxxxxxxxx> wrote: > > This channel provides a webdav server (rfc4918). This allows various > > guest or remote system that support webdav to access a folder shared by > > the client (some agent can be used to proxy the requests on a local port > > for example). The webdav server may also be accessed by an hypervisor as > > a remote filesystem interface, which can then be accessed by the guest > > via other means (fs/fat emulation, mtp device, etc) > > > > Due to the usage of a single channel stream and the need for concurrent > > requests, webdav clients streams are multiplexed. Each client stream is > > framed within 64k max messages (in little-endian) > > > > int64 client_id > > uint16 size > > char data[size] > > > > A new client_id indicates a new connection. A new communication stream > > with the webdav server should be started. A client stream message of > > size 0 indicates a disconnection of client_id. This multiplexed > > communication happens over the channel "data" message. > > > > Only when the port is opened may the communication be started. > > A closed port event should close all currently known multiplexed > > connections. > > > > Why WebDAV? > > > > webdav is supported natively by various OS for a long time (circa > > Windows XP). It has several open-source implementations and a variety of > > tools exist. A webdav implementation can be tested and used without a > > Spice server or any virtualization (this also permit sharing the > > implementation with other projects in the future, such as GNOME). It is > > an IETF open standard and thus thoroughly specified. > > > > The basic requirements for an efficient remote filesystem are provided > > by the standard (pipelining, concurrency, caching, copy/move, partial > > io, compression, locking ...) While other features are easily possible > > via extensions to the protocol (common ones are executable attributes, > > or searching for example). > > > > Given the requirements, and the popularity of http/webdav, I believe it > > is the best candidate for Spice remote filesystem support. > > > > Other alternatives (adhoc, p9, smb2, sftp) have been studied and > > discarded so far since they do not match in term of features or > > requirements. > > --- > > spice.proto | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/spice.proto b/spice.proto > > index 67b3803..316d287 100644 > > --- a/spice.proto > > +++ b/spice.proto > > @@ -1352,6 +1352,9 @@ channel PortChannel : SpicevmcChannel { > > } event; > > }; > > > > +channel WebDAVChannel : PortChannel { > > +}; > > + > > protocol Spice { > > MainChannel main = 1; > > DisplayChannel display; > > @@ -1363,4 +1366,5 @@ protocol Spice { > > SmartcardChannel smartcard; > > UsbredirChannel usbredir; > > PortChannel port; > > + WebDAVChannel webdav; > > }; > > -- > > 1.8.4.2 > > > > > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel