src/sock_test.c
changeset 43 42f5dc680930
parent 42 13cfc41f76a7
child 46 0c13bca53ae1
--- a/src/sock_test.c	Thu Mar 12 21:23:33 2009 +0200
+++ b/src/sock_test.c	Thu Mar 12 21:44:34 2009 +0200
@@ -225,6 +225,15 @@
     }
 }
 
+void sock_test_add_recv_str (struct sock_test *sock, const char *str)
+{
+    struct io_vec vec = {
+        (char*) str, strlen(str)
+    };
+
+    sock_test_add_recv_vec(sock, vec);
+}
+
 void sock_test_get_send_data (struct sock_test *sock, char **buf_ptr, size_t *len_ptr)
 {
     struct io_buf *buf = &sock->send_buf;
@@ -241,12 +250,21 @@
 
     // copy
     for (i = 0; i < buf->count; i++) {
-        memcpy(out + off, buf->vecs[i].buf, buf->vecs[i].len);
-        off += buf->vecs[i].len;
+        struct io_vec *vec = buf->vecs + i;
+
+        memcpy(out + off, vec->buf, vec->len);
+        off += vec->len;
+        
+        // zero
+        free(vec->buf); vec->buf = NULL;
+        vec->len = 0;
     }
     
     // update return
     *buf_ptr = out;
     *len_ptr = len;
+
+    // update write_vec
+    buf->write_vec = buf->vecs;
 }