From ea7264eab527e5184dc2635a2da50d72c3995865 Mon Sep 17 00:00:00 2001 From: sleepycatcoding <131554884+sleepycatcoding@users.noreply.github.com> Date: Sat, 15 Jul 2023 18:17:47 +0300 Subject: [PATCH] core: Dispatch IOErrorEvent when connection fails --- core/src/avm2/globals/flash/net/socket.rs | 1 - core/src/socket.rs | 18 +++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/src/avm2/globals/flash/net/socket.rs b/core/src/avm2/globals/flash/net/socket.rs index 6dcf44fd9..77fd79d12 100644 --- a/core/src/avm2/globals/flash/net/socket.rs +++ b/core/src/avm2/globals/flash/net/socket.rs @@ -26,7 +26,6 @@ pub fn connect<'gc>( } = &mut activation.context; sockets.connect(*navigator, socket, host.to_utf8_lossy().into_owned(), port); - // FIXME: Are we supposed to throw and IOError when a connection fails? Ok(Value::Undefined) } diff --git a/core/src/socket.rs b/core/src/socket.rs index 7da9db5b0..3ea37501b 100644 --- a/core/src/socket.rs +++ b/core/src/socket.rs @@ -129,7 +129,23 @@ impl<'gc> Sockets<'gc> { EventObject::bare_default_event(&mut activation.context, "connect"); Avm2::dispatch_event(&mut activation.context, connect_evt, target.into()); } else { - // FIXME: Dispatch ioError event as connection failed. + let target = activation + .context + .sockets + .sockets + .get(handle) + .expect("only valid handles in SocketAction") + .target; + + let io_error_evt = activation.avm2().classes().ioerrorevent.construct(&mut activation, &[ + "ioError".into(), + false.into(), + false.into(), + "TODO".into(), + 0.into() + ]).expect("IOErrorEvent should be constructed"); + + Avm2::dispatch_event(&mut activation.context, io_error_evt, target.into()); } } SocketAction::Data(handle, data) => {