On 11/8/06, Garrett Rooney <rooneg@electricjellyfish.net> wrote:
> On 11/8/06, Vlad Georgescu <vgeorgescu@gmail.com> wrote:
> > On 11/8/06, Garrett Rooney <rooneg@electricjellyfish.net> wrote:
> > > Hey, Vlad, now that the existing SASL support seems to be reasonably
> > > stable and functional, what do you think about integrating the last
> > > parts of your original patch? If you've got time to put together the
> > > portions that wrap the sockets to allow TLS and other such things I'd
> > > be happy to review and commit them.
> >
> > Sure. I actually started working on bringing those patches up to date
> > last weekend, and right now it's mostly done, I just need to write a
> > log message and do some more testing.
>
> Great!
And here it is.
This patch introduces a stream-based I/O abstraction layer for the
ra_svn protocol, using a new svn_ra_svn__stream_t type. (similar to a
svn_stream_t, but with additional ra_svn-specific callbacks).
This is largely based on work from the svnserve-ssl branch, with one
important difference: I only used one stream per connection, instead
of two. I think this is somewhat nicer (it was kind of redundant to
write to the 'output' stream and read from the 'input' stream, and it
also makes it easier to wrap a stream with another).
I tested this with svnserve in daemon and ssh modes (to cover both
stream types), and everything seems ok.
[[[
Encapsulate ra_svn's I/O with a stream-based wrapper. This will
facilitate the introduction
of SASL and TLS encryption.
[in subversion/libsvn_ra_svn]
* marshal.c:
Update the copyright date.
(svn_ra_svn_create_conn): Create the connection stream. Don't
initialize in_file and
out_file.
(svn_ra_svn__set_block_handler, svn_ra_svn__input_waiting,
writebuf_output, readbuf_input): Use the new svn_ra_svn__stream_t interface
instead of the old apr_file_t/apr_socket_t code.
* ra_svn.h
(ra_svn_pending_fn_t,
ra_svn_timeout_fn_t,
svn_ra_svn__stream_t): New typedefs.
(svn_ra_svn_conn_st): Add stream. Remove in_file, out_file and proc. Explain
that direct access to sock is still required by SASL.
(svn_ra_svn__stream_from_sock,
svn_ra_svn__stream_from_files,
svn_ra_svn__stream_create,
svn_ra_svn__stream_write,
svn_ra_svn__stream_read,
svn_ra_svn__stream_timeout,
svn_ra_svn__stream_pending): New function declarations.
* streams.c: New file. Implements the svn_ra_svn__stream_t interface for
socket and file streams.
]]]
--
Vlad
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Nov 8 21:51:08 2006