@@ -900,7 +900,6 @@ impl ConnectionRef {
900
900
udp_sender : sender,
901
901
runtime,
902
902
send_buffer : Vec :: new ( ) ,
903
- buffered_transmit : None ,
904
903
observed_external_addr : watch:: Sender :: new ( None ) ,
905
904
} ) ,
906
905
shared : Shared :: default ( ) ,
@@ -1019,8 +1018,6 @@ pub(crate) struct State {
1019
1018
udp_sender : Pin < Box < dyn UdpSender > > ,
1020
1019
runtime : Arc < dyn Runtime > ,
1021
1020
send_buffer : Vec < u8 > ,
1022
- /// We buffer a transmit when the underlying I/O would block
1023
- buffered_transmit : Option < proto:: Transmit > ,
1024
1021
/// Our last external address reported by the peer.
1025
1022
pub ( crate ) observed_external_addr : watch:: Sender < Option < SocketAddr > > ,
1026
1023
}
@@ -1033,26 +1030,18 @@ impl State {
1033
1030
let max_datagrams = self . udp_sender . max_transmit_segments ( ) ;
1034
1031
1035
1032
loop {
1036
- // Retry the last transmit, or get a new one.
1037
- let t = match self . buffered_transmit . take ( ) {
1038
- Some ( t) => t,
1039
- None => {
1040
- self . send_buffer . clear ( ) ;
1041
- self . send_buffer . reserve ( self . inner . current_mtu ( ) as usize ) ;
1042
- match self
1043
- . inner
1044
- . poll_transmit ( now, max_datagrams, & mut self . send_buffer )
1045
- {
1046
- Some ( t) => {
1047
- transmits += match t. segment_size {
1048
- None => 1 ,
1049
- Some ( s) => ( t. size + s - 1 ) / s, // round up
1050
- } ;
1051
- t
1052
- }
1053
- None => break ,
1054
- }
1055
- }
1033
+ self . send_buffer . clear ( ) ;
1034
+ self . send_buffer . reserve ( self . inner . current_mtu ( ) as usize ) ;
1035
+ let Some ( t) = self
1036
+ . inner
1037
+ . poll_transmit ( now, max_datagrams, & mut self . send_buffer )
1038
+ else {
1039
+ break ;
1040
+ } ;
1041
+
1042
+ transmits += match t. segment_size {
1043
+ None => 1 ,
1044
+ Some ( s) => ( t. size + s - 1 ) / s, // round up
1056
1045
} ;
1057
1046
1058
1047
let len = t. size ;
@@ -1062,10 +1051,7 @@ impl State {
1062
1051
. as_mut ( )
1063
1052
. poll_send ( & udp_transmit ( & t, & self . send_buffer [ ..len] ) , cx)
1064
1053
{
1065
- Poll :: Pending => {
1066
- self . buffered_transmit = Some ( t) ;
1067
- return Ok ( false ) ;
1068
- }
1054
+ Poll :: Pending => return Ok ( true ) ,
1069
1055
Poll :: Ready ( result) => result?, // propagate errors
1070
1056
}
1071
1057
0 commit comments