author | Michael Krelin <hacker@klever.net> | 2012-01-10 21:40:25 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2012-01-10 21:40:25 (UTC) |
commit | f1f12e73c9a62f29decab82c56793e4e72eea911 (patch) (unidiff) | |
tree | 1d195328f7230993de699c26475780f5f042f4b1 /src | |
parent | f4d5182b94c1bcc2f18413c28469fce6522fb743 (diff) | |
download | iii-f1f12e73c9a62f29decab82c56793e4e72eea911.zip iii-f1f12e73c9a62f29decab82c56793e4e72eea911.tar.gz iii-f1f12e73c9a62f29decab82c56793e4e72eea911.tar.bz2 |
adjust socket_flags for mac os x
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | src/eyefiworker.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/eyefiworker.cc b/src/eyefiworker.cc index c971922..2d7827c 100644 --- a/src/eyefiworker.cc +++ b/src/eyefiworker.cc | |||
@@ -1,20 +1,28 @@ | |||
1 | #include <signal.h> | 1 | #include <signal.h> |
2 | #include <stdexcept> | 2 | #include <stdexcept> |
3 | #include "eyefiworker.h" | 3 | #include "eyefiworker.h" |
4 | 4 | ||
5 | eyefiworker::eyefiworker() | 5 | eyefiworker::eyefiworker() |
6 | : eyefiService(SOAP_IO_STORE|SOAP_IO_KEEPALIVE) { | 6 | : eyefiService(SOAP_IO_STORE|SOAP_IO_KEEPALIVE) { |
7 | bind_flags = SO_REUSEADDR; max_keep_alive = 0; | 7 | bind_flags = SO_REUSEADDR; max_keep_alive = 0; |
8 | socket_flags = MSG_NOSIGNAL; | 8 | socket_flags = |
9 | #if defined(MSG_NOSIGNAL) | ||
10 | MSG_NOSIGNAL | ||
11 | #elif defined(SO_NOSIGPIPE) | ||
12 | SO_NOSIGPIPE | ||
13 | #else | ||
14 | #error Something is wrong with sigpipe prevention on the platform | ||
15 | #endif | ||
16 | ; | ||
9 | } | 17 | } |
10 | 18 | ||
11 | int eyefiworker::run(int port) { | 19 | int eyefiworker::run(int port) { |
12 | if(!soap_valid_socket(bind(0,port,64))) | 20 | if(!soap_valid_socket(bind(0,port,64))) |
13 | throw std::runtime_error("failed to bind()"); | 21 | throw std::runtime_error("failed to bind()"); |
14 | signal(SIGCHLD,SIG_IGN); | 22 | signal(SIGCHLD,SIG_IGN); |
15 | while(true) { | 23 | while(true) { |
16 | if(!soap_valid_socket(accept())) | 24 | if(!soap_valid_socket(accept())) |
17 | throw std::runtime_error("failed to accept()"); | 25 | throw std::runtime_error("failed to accept()"); |
18 | pid_t p = fork(); | 26 | pid_t p = fork(); |
19 | if(p<0) throw std::runtime_error("failed to fork()"); | 27 | if(p<0) throw std::runtime_error("failed to fork()"); |
20 | if(!p) { | 28 | if(!p) { |