summaryrefslogtreecommitdiff
path: root/src/netops.c
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2014-11-01 16:58:20 +0100
committerCarlos Martín Nieto <cmn@dwim.me>2014-12-10 01:39:09 +0100
commit02b4c1e2a426404ad7cad8e8a114f7f36bdb8b59 (patch)
treea25b5c8a9b07d1d75f05e6fec5b1f407ac203de1 /src/netops.c
parent468d7b11f9642f37a2c54e6fd6d539b223a103aa (diff)
downloadlibgit2-02b4c1e2a426404ad7cad8e8a114f7f36bdb8b59.tar.gz
Port the TCP transport to the new stream API
Diffstat (limited to 'src/netops.c')
-rw-r--r--src/netops.c19
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)
{