From 9a449d4f6c5fe68f93afb7dd97900f33907a7388 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Tue, 21 Jan 2020 20:29:26 -0700
Subject: [PATCH] Stub for SO_ERROR to fix curl

---
 src/platform/redox/socket.rs | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs
index bb750bb7..56aa5532 100644
--- a/src/platform/redox/socket.rs
+++ b/src/platform/redox/socket.rs
@@ -145,6 +145,28 @@ impl PalSocket for Sys {
         option_value: *mut c_void,
         option_len: *mut socklen_t,
     ) -> c_int {
+        match level {
+            SOL_SOCKET => match option_name {
+                SO_ERROR => {
+                    if option_value.is_null() {
+                        return e(Err(syscall::Error::new(syscall::EFAULT))) as c_int;
+                    }
+
+                    if (option_len as usize) < mem::size_of::<c_int>() {
+                        return e(Err(syscall::Error::new(syscall::EINVAL))) as c_int;
+                    }
+
+                    let error = unsafe { &mut *(option_value as *mut c_int) };
+                    //TODO: Socket nonblock connection error
+                    *error = 0;
+
+                    return 0;
+                },
+                _ => (),
+            },
+            _ => (),
+        }
+
         eprintln!(
             "getsockopt({}, {}, {}, {:p}, {:p})",
             socket, level, option_name, option_value, option_len
-- 
GitLab