aboutsummaryrefslogtreecommitdiffstats
path: root/src/platform
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/dummy/bind.rs2
-rw-r--r--src/platform/dummy/tun.rs8
2 files changed, 6 insertions, 4 deletions
diff --git a/src/platform/dummy/bind.rs b/src/platform/dummy/bind.rs
index 5010597..984b886 100644
--- a/src/platform/dummy/bind.rs
+++ b/src/platform/dummy/bind.rs
@@ -7,7 +7,7 @@ use std::sync::Arc;
use std::sync::Mutex;
use super::super::bind::*;
-use super::super::Endpoint;
+
use super::UnitEndpoint;
pub struct VoidOwner {}
diff --git a/src/platform/dummy/tun.rs b/src/platform/dummy/tun.rs
index 9fe9480..fb87d2f 100644
--- a/src/platform/dummy/tun.rs
+++ b/src/platform/dummy/tun.rs
@@ -1,3 +1,4 @@
+use std::cmp::min;
use std::error::Error;
use std::fmt;
use std::sync::atomic::{AtomicUsize, Ordering};
@@ -84,9 +85,10 @@ impl Reader for TunReader {
fn read(&self, buf: &mut [u8], offset: usize) -> Result<usize, Self::Error> {
match self.rx.recv() {
- Ok(m) => {
- buf[offset..].copy_from_slice(&m[..]);
- Ok(m.len())
+ Ok(msg) => {
+ let n = min(buf.len() - offset, msg.len());
+ buf[offset..offset + n].copy_from_slice(&msg[..n]);
+ Ok(n)
}
Err(_) => Err(TunError::Disconnected),
}