diff options
| author | 2023-07-01 17:28:43 -0700 | |
|---|---|---|
| committer | 2023-08-15 20:59:57 -0400 | |
| commit | 755bcc459bb9a5c7d521ea9046a8ac58c5256e73 (patch) | |
| tree | 63a837fd55b77a8bb3c0b766c31a0d8ab0642d67 /src/core/hle | |
| parent | Merge pull request #11287 from liamwhite/replaced-bytes (diff) | |
| download | yuzu-755bcc459bb9a5c7d521ea9046a8ac58c5256e73.tar.gz yuzu-755bcc459bb9a5c7d521ea9046a8ac58c5256e73.tar.xz yuzu-755bcc459bb9a5c7d521ea9046a8ac58c5256e73.zip | |
Improve behavior when sending to closed connection
- On Unix, this would previously kill the Yuzu process with SIGPIPE.
Send MSG_NOSIGNAL to opt out of this.
- Add support for the proper error code in this situation, EPIPE.
- Windows has nonstandard behavior in this situation; translate it to
the standard behavior. Kind of pointless, but isn't it nice to be
correct?
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/sockets/sockets.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/sockets_translate.cpp | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/core/hle/service/sockets/sockets.h b/src/core/hle/service/sockets/sockets.h index 77426c46e..f86af01a4 100644 --- a/src/core/hle/service/sockets/sockets.h +++ b/src/core/hle/service/sockets/sockets.h | |||
| @@ -18,7 +18,9 @@ enum class Errno : u32 { | |||
| 18 | AGAIN = 11, | 18 | AGAIN = 11, |
| 19 | INVAL = 22, | 19 | INVAL = 22, |
| 20 | MFILE = 24, | 20 | MFILE = 24, |
| 21 | PIPE = 32, | ||
| 21 | MSGSIZE = 90, | 22 | MSGSIZE = 90, |
| 23 | CONNABORTED = 103, | ||
| 22 | CONNRESET = 104, | 24 | CONNRESET = 104, |
| 23 | NOTCONN = 107, | 25 | NOTCONN = 107, |
| 24 | TIMEDOUT = 110, | 26 | TIMEDOUT = 110, |
diff --git a/src/core/hle/service/sockets/sockets_translate.cpp b/src/core/hle/service/sockets/sockets_translate.cpp index c1187209f..aed05250c 100644 --- a/src/core/hle/service/sockets/sockets_translate.cpp +++ b/src/core/hle/service/sockets/sockets_translate.cpp | |||
| @@ -23,10 +23,14 @@ Errno Translate(Network::Errno value) { | |||
| 23 | return Errno::INVAL; | 23 | return Errno::INVAL; |
| 24 | case Network::Errno::MFILE: | 24 | case Network::Errno::MFILE: |
| 25 | return Errno::MFILE; | 25 | return Errno::MFILE; |
| 26 | case Network::Errno::PIPE: | ||
| 27 | return Errno::PIPE; | ||
| 26 | case Network::Errno::NOTCONN: | 28 | case Network::Errno::NOTCONN: |
| 27 | return Errno::NOTCONN; | 29 | return Errno::NOTCONN; |
| 28 | case Network::Errno::TIMEDOUT: | 30 | case Network::Errno::TIMEDOUT: |
| 29 | return Errno::TIMEDOUT; | 31 | return Errno::TIMEDOUT; |
| 32 | case Network::Errno::CONNABORTED: | ||
| 33 | return Errno::CONNABORTED; | ||
| 30 | case Network::Errno::CONNRESET: | 34 | case Network::Errno::CONNRESET: |
| 31 | return Errno::CONNRESET; | 35 | return Errno::CONNRESET; |
| 32 | case Network::Errno::INPROGRESS: | 36 | case Network::Errno::INPROGRESS: |