Skip to content

Commit aa4f98a

Browse files
authored
fix(socket): use object repr in deallocation warnings (#8422)
Assisted-by: Codex:gpt-5.6-sol
1 parent 9e92f96 commit aa4f98a

2 files changed

Lines changed: 5 additions & 18 deletions

File tree

Lib/test/test_ssl.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,6 @@ def test_tls_unique_channel_binding(self):
754754
with test_wrap_socket(s, server_side=True, certfile=CERTFILE) as ss:
755755
self.assertIsNone(ss.get_channel_binding("tls-unique"))
756756

757-
@unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: "<ssl.SSLSocket fd=3, family=2, type=1, proto=0, laddr=('0.0.0.0', 0)>" not found in "unclosed <socket.socket fd=3, family=2, type=1, proto=0, laddr=('0.0.0.0', 0)>"
758757
def test_dealloc_warn(self):
759758
ss = test_wrap_socket(socket.socket(socket.AF_INET))
760759
r = repr(ss)

crates/stdlib/src/socket.rs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,23 +1378,11 @@ mod _socket {
13781378
fn del(zelf: &Py<Self>, vm: &VirtualMachine) -> PyResult<()> {
13791379
// Emit ResourceWarning if socket is still open
13801380
if zelf.sock.read().is_some() {
1381-
let laddr = if let Ok(sock) = zelf.sock()
1382-
&& let Ok(addr) = sock.local_addr()
1383-
&& let Ok(repr) = get_addr_tuple(&addr, vm).repr(vm)
1384-
{
1385-
format!(", laddr={}", repr.as_wtf8())
1386-
} else {
1387-
String::new()
1388-
};
1389-
1390-
let msg = format!(
1391-
"unclosed <socket.socket fd={}, family={}, type={}, proto={}{}>",
1392-
zelf.fileno(),
1393-
zelf.family.load(),
1394-
zelf.kind.load(),
1395-
zelf.proto.load(),
1396-
laddr
1397-
);
1381+
let repr = zelf
1382+
.as_object()
1383+
.repr(vm)
1384+
.unwrap_or_else(|_| vm.ctx.new_str("<socket>"));
1385+
let msg = format!("unclosed {}", repr.as_wtf8());
13981386
let _ = crate::vm::warn::warn(
13991387
vm.ctx.new_str(msg).into(),
14001388
Some(vm.ctx.exceptions.resource_warning.to_owned()),

0 commit comments

Comments
 (0)