@@ -1201,8 +1201,10 @@ fn register_net_tools(
12011201 let addr = parse_sockaddr ( & args) ?;
12021202 pol. check ( & addr) ?;
12031203 let sa: SockAddr = addr. into ( ) ;
1204- let tbl = t. lock ( ) . unwrap ( ) ;
1205- let sock = tbl. get_socket ( fd) ?;
1204+ let sock = {
1205+ let tbl = t. lock ( ) . unwrap ( ) ;
1206+ tbl. get_socket ( fd) ?. try_clone ( ) ?
1207+ } ;
12061208 sock. connect_timeout ( & sa, SOCKET_TIMEOUT ) ?;
12071209 Ok ( json ! ( { } ) )
12081210 } ) ;
@@ -3224,18 +3226,23 @@ mod tests {
32243226 fn net_socket_has_default_timeout ( ) {
32253227 let mut tools = ToolRegistry :: new ( ) ;
32263228 let exit_code = Arc :: new ( AtomicI32 :: new ( 0 ) ) ;
3227- register_internal_tools ( & mut tools, & exit_code, Some ( & NetworkPolicy :: AllowAll ) , None ) ;
3229+ let socket_table =
3230+ register_internal_tools ( & mut tools, & exit_code, Some ( & NetworkPolicy :: AllowAll ) , None ) ;
32283231
32293232 let req = br#"{"name":"net_socket","args":{"family":2,"type":1}}"# ;
32303233 let resp = tools. dispatch ( req) ;
32313234 let s = std:: str:: from_utf8 ( & resp) . unwrap ( ) ;
3235+ assert ! ( !s. contains( "error" ) , "socket creation should succeed: {s}" ) ;
3236+
32323237 let v: serde_json:: Value = serde_json:: from_str ( s) . unwrap ( ) ;
32333238 let fd = v[ "result" ] [ "fd" ] . as_u64 ( ) . unwrap ( ) ;
3234-
3235- // Verify the socket was created successfully
32363239 assert ! ( fd > 0 ) ;
3237- // The timeout is set internally; we verify it works by checking
3238- // that the response is valid (no error from set_read_timeout)
3239- assert ! ( !s. contains( "error" ) , "socket creation should succeed: {s}" ) ;
3240+
3241+ // Verify timeouts are actually set to SOCKET_TIMEOUT (30s)
3242+ let tbl = socket_table. unwrap ( ) ;
3243+ let tbl = tbl. lock ( ) . unwrap ( ) ;
3244+ let sock = tbl. get_socket ( fd) . unwrap ( ) ;
3245+ assert_eq ! ( sock. read_timeout( ) . unwrap( ) , Some ( SOCKET_TIMEOUT ) ) ;
3246+ assert_eq ! ( sock. write_timeout( ) . unwrap( ) , Some ( SOCKET_TIMEOUT ) ) ;
32403247 }
32413248}
0 commit comments