diff --git a/manifest.toml b/manifest.toml index fda6527..274410d 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,10 +5,10 @@ packages = [ { name = "exception", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "exception", source = "hex", outer_checksum = "329D269D5C2A314F7364BD2711372B6F2C58FA6F39981572E5CA68624D291F8C" }, { name = "gleam_crypto", version = "1.5.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_crypto", source = "hex", outer_checksum = "50774BAFFF1144E7872814C566C5D653D83A3EBF23ACC3156B757A1B6819086E" }, { name = "gleam_erlang", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "1124AD3AA21143E5AF0FC5CF3D9529F6DB8CA03E43A55711B60B6B7B3874375C" }, - { name = "gleam_http", version = "4.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "DD0271B32C356FB684EC7E9F48B1E835D0480168848581F68983C0CC371405D4" }, - { name = "gleam_otp", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "7987CBEBC8060B88F14575DEF546253F3116EBE2A5DA6FD82F38243FCE97C54B" }, - { name = "gleam_stdlib", version = "0.62.1", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "0080706D3A5A9A36C40C68481D1D231D243AF602E6D2A2BE67BA8F8F4DFF45EC" }, - { name = "gleeunit", version = "1.6.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "FDC68A8C492B1E9B429249062CD9BAC9B5538C6FBF584817205D0998C42E1DAC" }, + { name = "gleam_http", version = "4.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "82EA6A717C842456188C190AFB372665EA56CE13D8559BF3B1DD9E40F619EE0C" }, + { name = "gleam_otp", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "BA6A294E295E428EC1562DC1C11EA7530DCB981E8359134BEABC8493B7B2258E" }, + { name = "gleam_stdlib", version = "0.65.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "7C69C71D8C493AE11A5184828A77110EB05A7786EBF8B25B36A72F879C3EE107" }, + { name = "gleeunit", version = "1.7.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "CD701726CBCE5588B375D157B4391CFD0F2F134CD12D9B6998A395484DE05C58" }, { name = "gramps", version = "6.0.0", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gramps", source = "hex", outer_checksum = "8B7195978FBFD30B43DF791A8A272041B81E45D245314D7A41FC57237AA882A0" }, { name = "logging", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "logging", source = "hex", outer_checksum = "1098FBF10B54B44C2C7FDF0B01C1253CAFACDACABEFB4B0D027803246753E06D" }, ] diff --git a/src/stratus/internal/socket.gleam b/src/stratus/internal/socket.gleam index 7fa80bc..6cd4b9d 100644 --- a/src/stratus/internal/socket.gleam +++ b/src/stratus/internal/socket.gleam @@ -146,26 +146,34 @@ pub fn selector() -> Selector(Result(SocketMessage, List(decode.DecodeError))) { |> process.select_record(TcpError, 2, fn(data) { { use reason <- decode.field(2, atom.decoder()) - parse_known_socket_reason(reason) - |> result.map(Err) - |> result.map(decode.success) - |> result.map_error(fn(_data) { - decode.failure(Err(Badarg), "SocketReason") - }) - |> result.unwrap_both + let socket_message = + parse_known_socket_reason(reason) + |> result.map(Err) + |> result.map(decode.success) + |> result.map_error(fn(_data) { + decode.failure(Err(Badarg), "SocketReason") + }) + case socket_message { + Ok(message) -> message + Error(message) -> message + } } |> decode.run(data, _) }) |> process.select_record(SslError, 2, fn(data) { { use reason <- decode.field(2, atom.decoder()) - parse_known_socket_reason(reason) - |> result.map(Err) - |> result.map(decode.success) - |> result.map_error(fn(_data) { - decode.failure(Err(Badarg), "SocketReason") - }) - |> result.unwrap_both + let socket_message = + parse_known_socket_reason(reason) + |> result.map(Err) + |> result.map(decode.success) + |> result.map_error(fn(_data) { + decode.failure(Err(Badarg), "SocketReason") + }) + case socket_message { + Ok(message) -> message + Error(message) -> message + } } |> decode.run(data, _) })