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) => {