Skip to content

Commit bb83f4b

Browse files
committedJan 25, 2017
Actually close TCP sockets with 0 references during pruning.
1 parent 2c321a9 commit bb83f4b

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed
 

Diff for: ‎src/socket/set.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,17 @@ impl<'a, 'b: 'a, 'c: 'a + 'b> Set<'a, 'b, 'c> {
137137
pub fn prune(&mut self) {
138138
for (index, item) in self.sockets.iter_mut().enumerate() {
139139
let mut may_remove = false;
140-
if let &mut Some(Item { refs: 0, ref socket }) = item {
140+
if let &mut Some(Item { refs: 0, ref mut socket }) = item {
141141
match socket {
142-
&Socket::Udp(_) =>
142+
&mut Socket::Udp(_) =>
143143
may_remove = true,
144-
&Socket::Tcp(ref socket) =>
145-
may_remove = socket.state() == TcpState::Closed,
146-
&Socket::__Nonexhaustive => unreachable!()
144+
&mut Socket::Tcp(ref mut socket) =>
145+
if socket.state() == TcpState::Closed {
146+
may_remove = true
147+
} else {
148+
socket.close()
149+
},
150+
&mut Socket::__Nonexhaustive => unreachable!()
147151
}
148152
}
149153
if may_remove {

0 commit comments

Comments
 (0)
Please sign in to comment.