diff options
Diffstat (limited to 'src/netops.c')
| -rw-r--r-- | src/netops.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/netops.c b/src/netops.c index 23e7e9d3c..ab135c46b 100644 --- a/src/netops.c +++ b/src/netops.c @@ -104,6 +104,16 @@ static int ssl_set_error(gitno_ssl *ssl, int error) int gitno_recv(gitno_buffer *buf) { + if (buf->io) { + int ret; + ret = git_stream_read(buf->io, buf->data + buf->offset, buf->len - buf->offset); + if (ret < 0) + return -1; + + buf->offset += ret; + return ret; + } + return buf->recv(buf); } @@ -168,6 +178,15 @@ void gitno_buffer_setup(gitno_socket *socket, gitno_buffer *buf, char *data, siz gitno_buffer_setup_callback(socket, buf, data, len, gitno__recv, NULL); } +void gitno_buffer_setup_fromstream(git_stream *st, gitno_buffer *buf, char *data, size_t len) +{ + memset(data, 0x0, len); + buf->data = data; + buf->len = len; + buf->offset = 0; + buf->io = st; +} + /* Consume up to ptr and move the rest of the buffer to the beginning */ void gitno_consume(gitno_buffer *buf, const char *ptr) { |
