@@ -24,7 +24,7 @@ use hyper_util::{
24
24
use metrics:: counter;
25
25
use rustc_hash:: FxHashMap ;
26
26
use serde:: { Deserialize , Serialize } ;
27
- use tokio:: task:: JoinSet ;
27
+ use tokio:: { pin , task:: JoinSet } ;
28
28
use tracing:: { debug, error, info} ;
29
29
30
30
use super :: General ;
@@ -197,9 +197,11 @@ impl SplunkHec {
197
197
let mut join_set = JoinSet :: new ( ) ;
198
198
let labels = Arc :: new ( self . metric_labels . clone ( ) ) ;
199
199
200
+ let shutdown = self . shutdown . recv ( ) ;
201
+ pin ! ( shutdown) ;
200
202
loop {
201
203
tokio:: select! {
202
- _ = self . shutdown. recv ( ) => {
204
+ _ = & mut shutdown => {
203
205
info!( "shutdown signal received" ) ;
204
206
break ;
205
207
}
@@ -213,6 +215,7 @@ impl SplunkHec {
213
215
} ;
214
216
215
217
let labels = Arc :: clone( & labels) ;
218
+ let sem = Arc :: clone( & sem) ;
216
219
join_set. spawn( async move {
217
220
debug!( "Accepted connection from {addr}" ) ;
218
221
let permit = match sem. acquire_owned( ) . await {
@@ -222,7 +225,8 @@ impl SplunkHec {
222
225
return ;
223
226
}
224
227
} ;
225
- let serve_future = auto:: Builder :: new( TokioExecutor :: new( ) )
228
+ let builder = auto:: Builder :: new( TokioExecutor :: new( ) ) ;
229
+ let serve_future = builder
226
230
. serve_connection( TokioIo :: new( stream) , service_fn( move |req| {
227
231
let labels = Arc :: clone( & labels) ;
228
232
srv( req, labels)
0 commit comments