Repository: qpid-dispatch Updated Branches: refs/heads/master 6422f523a -> 4926d75aa
DISPATCH-290 (Patch from Adel Boutros) - Updates to support the Solaris build Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/4926d75a Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/4926d75a Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/4926d75a Branch: refs/heads/master Commit: 4926d75aa1315731755fcf5bbc9a4f848083d5ae Parents: 6422f52 Author: Ted Ross <[email protected]> Authored: Tue May 10 16:41:23 2016 -0400 Committer: Ted Ross <[email protected]> Committed: Tue May 10 16:41:23 2016 -0400 ---------------------------------------------------------------------- CMakeLists.txt | 4 ++- router/src/main.c | 10 +++++++ src/CMakeLists.txt | 3 +- src/compose.c | 1 + src/error.c | 4 +-- src/posix/driver.c | 24 ++++++++++++--- tests/timer_test.c | 80 ++++++++++++++++++++++++------------------------- 7 files changed, 77 insertions(+), 49 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4926d75a/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 21bdca7..9f71025 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,9 +114,11 @@ endif (NOT COMMAND add_compile_options) add_compile_options(-pthread) add_compile_options(-Wall) +if (NOT CMAKE_SYSTEM_NAME STREQUAL SunOS) add_compile_options(-Werror) +endif (NOT CMAKE_SYSTEM_NAME STREQUAL SunOS) add_compile_options(-std=gnu99) -set(CATCH_UNDEFINED "-Wl,--no-undefined") +set(CATCH_UNDEFINED "-Wl,-z,defs") ## ## Header file installation http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4926d75a/router/src/main.c ---------------------------------------------------------------------- diff --git a/router/src/main.c b/router/src/main.c index c452c63..b121043 100644 --- a/router/src/main.c +++ b/router/src/main.c @@ -86,7 +86,12 @@ static void server_signal_handler(void* context, int signum) static void check(int fd) { if (qd_error_code()) { qd_log(log_source, QD_LOG_CRITICAL, "Router start-up failed: %s", qd_error_message()); + #ifdef __sun + FILE *file = fdopen(fd, "a+"); + fprintf(file, "%s: %s\n", argv0, qd_error_message()); + #else dprintf(fd, "%s: %s\n", argv0, qd_error_message()); + #endif close(fd); exit(1); } @@ -128,7 +133,12 @@ static void main_process(const char *config_path, const char *python_pkgdir, int signal(SIGINT, signal_handler); if (fd > 2) { /* Daemon mode, fd is one end of a pipe not stdout or stderr */ + #ifdef __sun + FILE *file = fdopen(fd, "a+"); + fprintf(file, "ok"); + #else dprintf(fd, "ok"); // Success signal + #endif close(fd); } http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4926d75a/src/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4d7f784..c5aa589 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -106,7 +106,6 @@ set_target_properties(qpid-dispatch PROPERTIES install(TARGETS qpid-dispatch LIBRARY DESTINATION ${QPID_DISPATCH_HOME}) -# Set in parent scope for calling cmake file. -set (QPID_DISPATCH_LIB "libqpid-dispatch.so" PARENT_SCOPE) +set (QPID_DISPATCH_LIB "libqpid-dispatch.so") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4926d75a/src/compose.c ---------------------------------------------------------------------- diff --git a/src/compose.c b/src/compose.c index e0b7956..df77f44 100644 --- a/src/compose.c +++ b/src/compose.c @@ -23,6 +23,7 @@ #include <qpid/dispatch/amqp.h> #include "compose_private.h" #include <memory.h> +#include <string.h> ALLOC_DEFINE(qd_composite_t); ALLOC_DEFINE(qd_composed_field_t); http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4926d75a/src/error.c ---------------------------------------------------------------------- diff --git a/src/error.c b/src/error.c index 8af0891..87deae0 100644 --- a/src/error.c +++ b/src/error.c @@ -179,7 +179,7 @@ qd_error_t qd_error_errno_impl(int errnum, const char *file, int line, const cha if (errnum) { ts.error_code = QD_ERROR_SYSTEM; char buf[ERROR_MAX]; - char *errstr = strerror_r(errno, buf, sizeof(buf)); + strerror_r(errno, buf, sizeof(buf)); char *begin = ts.error_message; char *end = begin + ERROR_MAX; @@ -187,7 +187,7 @@ qd_error_t qd_error_errno_impl(int errnum, const char *file, int line, const cha va_start(arglist, fmt); vaprintf(&begin, end, fmt, arglist); va_end(arglist); - aprintf(&begin, end, ": %s", errstr); + aprintf(&begin, end, ": %s", buf); qd_log_impl(log_source, QD_LOG_ERROR, file, line, "%s", qd_error_message()); return qd_error_code(); } http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4926d75a/src/posix/driver.c ---------------------------------------------------------------------- diff --git a/src/posix/driver.c b/src/posix/driver.c index e9d43e3..b7a4958 100644 --- a/src/posix/driver.c +++ b/src/posix/driver.c @@ -37,6 +37,10 @@ #include <assert.h> #include <time.h> +#ifdef __sun +#include <signal.h> +#endif + #include <qpid/dispatch/driver.h> #include <qpid/dispatch/threading.h> #include "alloc.h" @@ -264,8 +268,9 @@ qdpn_listener_t *qdpn_listener(qdpn_driver_t *driver, { if (!driver) return NULL; - struct addrinfo *addr; - int code = getaddrinfo(host, port, NULL, &addr); + struct addrinfo hints = {0}, *addr; + hints.ai_socktype = SOCK_STREAM; + int code = getaddrinfo(host, port, &hints, &addr); if (code) { qd_log(driver->log, QD_LOG_ERROR, "getaddrinfo(%s, %s): %s\n", host, port, gai_strerror(code)); return 0; @@ -481,8 +486,9 @@ qdpn_connector_t *qdpn_connector(qdpn_driver_t *driver, { if (!driver) return NULL; - struct addrinfo *addr; - int code = getaddrinfo(host, port, NULL, &addr); + struct addrinfo hints = {0}, *addr; + hints.ai_socktype = SOCK_STREAM; + int code = getaddrinfo(host, port, &hints, &addr); if (code) { qd_log(driver->log, QD_LOG_ERROR, "getaddrinfo(%s, %s): %s", host, port, gai_strerror(code)); return 0; @@ -788,7 +794,11 @@ void qdpn_connector_process(qdpn_connector_t *c) c->status |= PN_SEL_WR; if (c->pending_write) { c->pending_write = false; + #ifdef MSG_NOSIGNAL ssize_t n = send(c->fd, pn_transport_head(transport), pending, MSG_NOSIGNAL); + #else + ssize_t n = send(c->fd, pn_transport_head(transport), pending, 0); + #endif if (n < 0) { // XXX if (errno != EAGAIN) { @@ -852,6 +862,12 @@ qdpn_driver_t *qdpn_driver() qdpn_configure_sock(d, d->ctrl[0], false); qdpn_configure_sock(d, d->ctrl[1], false); +#ifdef __sun + struct sigaction act; + act.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &act, NULL); +#endif + return d; } http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4926d75a/tests/timer_test.c ---------------------------------------------------------------------- diff --git a/tests/timer_test.c b/tests/timer_test.c index 409cba3..9fab15a 100644 --- a/tests/timer_test.c +++ b/tests/timer_test.c @@ -29,7 +29,7 @@ static unsigned long fire_mask; static qd_timer_list_t pending_timers; static sys_mutex_t *lock; -static long time; +static long time_value; static qd_timer_t *timers[16]; @@ -66,11 +66,11 @@ static char* test_quiet(void *context) fire_mask = 0; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); while(fire_head()); @@ -132,9 +132,9 @@ static char* test_immediate_plus_delayed(void *context) if (fire_mask != 1) return "Incorrect fire mask 1"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - time += 8; - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + time_value += 8; + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); if (fire_head() < 1) return "Delayed Failed to fire"; @@ -153,19 +153,19 @@ static char* test_single(void *context) if (fire_head() > 0) return "Premature firing 1"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); if (fire_head() > 0) return "Premature firing 2"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); if (fire_head() < 1) return "Failed to fire"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); if (fire_head() != 0) return "Spurious fires"; @@ -185,8 +185,8 @@ static char* test_two_inorder(void *context) qd_timer_schedule(timers[1], 4); sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); int count = fire_head(); if (count < 1) return "First failed to fire"; @@ -194,8 +194,8 @@ static char* test_two_inorder(void *context) if (fire_mask != 1) return "Incorrect fire mask 1"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); if (fire_head() < 1) return "Second failed to fire"; if (fire_mask != 3) return "Incorrect fire mask 3"; @@ -213,8 +213,8 @@ static char* test_two_reverse(void *context) qd_timer_schedule(timers[1], 2); sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); int count = fire_head(); if (count < 1) return "First failed to fire"; @@ -222,8 +222,8 @@ static char* test_two_reverse(void *context) if (fire_mask != 2) return "Incorrect fire mask 2"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); if (fire_head() < 1) return "Second failed to fire"; if (fire_mask != 3) return "Incorrect fire mask 3"; @@ -241,8 +241,8 @@ static char* test_two_duplicate(void *context) qd_timer_schedule(timers[1], 2); sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); int count = fire_head(); if (count != 2) return "Expected two firings"; @@ -250,8 +250,8 @@ static char* test_two_duplicate(void *context) if (fire_mask != 3) return "Incorrect fire mask 3"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); if (fire_head() > 0) return "Spurious timer fires"; @@ -270,8 +270,8 @@ static char* test_separated(void *context) qd_timer_schedule(timers[1], 4); sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); count = fire_head(); if (count < 1) return "First failed to fire"; @@ -282,8 +282,8 @@ static char* test_separated(void *context) qd_timer_schedule(timers[3], 4); sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); count = fire_head(); fire_head(); @@ -292,20 +292,20 @@ static char* test_separated(void *context) if (fire_mask != 7) return "Incorrect fire mask 7"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); count = fire_head(); if (count < 1) return "Fourth failed to fire"; if (fire_mask != 15) return "Incorrect fire mask 15"; sys_mutex_lock(lock); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); count = fire_head(); if (count > 0) return "Spurious fire"; @@ -350,7 +350,7 @@ static char* test_big(void *context) qd_timer_schedule(timers[i], durations[i]); for (i = 0; i < 18; i++) { sys_mutex_lock(lock); - qd_timer_visit_LH(time++); + qd_timer_visit_LH(time_value++); sys_mutex_unlock(lock); while(fire_head()); if (fire_mask != masks[i]) { @@ -371,7 +371,7 @@ int timer_tests(void) fire_mask = 0; DEQ_INIT(pending_timers); lock = qd_timer_lock(); - time = 1; + time_value = 1; timers[0] = qd_timer(0, 0, (void*) 0x00000001); timers[1] = qd_timer(0, 0, (void*) 0x00000002); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
