@@ -134,8 +134,9 @@ impl RemotePublisher {
134134 } )
135135 . await ?;
136136
137- // Client::new() takes ownership of the RawFd.
138- Ok ( Client :: new ( fd) )
137+ // Safety: `fd` is a unix socket returned by `connect()`.
138+ // `from_raw_unix_socket_fd` takes ownership of the RawFd.
139+ Ok ( unsafe { Client :: from_raw_unix_socket_fd ( fd) } )
139140 }
140141
141142 /// Publish a new event.
@@ -195,17 +196,14 @@ impl Events for RemotePublisher {
195196
196197#[ cfg( test) ]
197198mod tests {
198- use std:: {
199- os:: unix:: { io:: AsRawFd , net:: UnixListener } ,
200- sync:: Arc ,
201- } ;
199+ use std:: { os:: unix:: net:: UnixListener , sync:: Arc } ;
202200
203201 use async_trait:: async_trait;
204202 use containerd_shim_protos:: {
205203 api:: { Empty , ForwardRequest } ,
206204 events:: task:: TaskOOM ,
207205 shim_async:: { create_events, Events } ,
208- ttrpc:: asynchronous:: Server ,
206+ ttrpc:: asynchronous:: { transport :: Listener , Server } ,
209207 } ;
210208 use tokio:: sync:: {
211209 mpsc:: { channel, Sender } ,
@@ -247,13 +245,11 @@ mod tests {
247245 let barrier2 = barrier. clone ( ) ;
248246 let server_thread = tokio:: spawn ( async move {
249247 let listener = UnixListener :: bind ( & path1) . unwrap ( ) ;
248+ let listener = Listener :: try_from ( listener) . unwrap ( ) ;
250249 let service = create_events ( Arc :: new ( server) ) ;
251250 let mut server = Server :: new ( )
252- . set_domain_unix ( )
253- . add_listener ( listener. as_raw_fd ( ) )
254- . unwrap ( )
251+ . add_listener ( listener)
255252 . register_service ( service) ;
256- std:: mem:: forget ( listener) ;
257253 server. start ( ) . await . unwrap ( ) ;
258254 barrier2. wait ( ) . await ;
259255
0 commit comments