Merge branch 'develop' of github.com:eclipse/paho.mqtt.c into develop

This commit is contained in:
Ian Craggs 2020-03-12 10:58:16 +00:00
commit 2d29e4bd27
12 changed files with 115 additions and 130 deletions

View File

@ -1,17 +1,13 @@
sudo: required sudo: required
language: c language: c
compiler: jobs:
- gcc include:
- clang - os: linux
os: compiler: gcc
- linux env: OPENSSL_ROOT_DIR=
- osx - os: osx
matrix: compiler: clang
exclude: env: OPENSSL_ROOT_DIR=/usr/local/opt/openssl
- compiler: gcc
os: osx
- compiler: clang
os: linux
before_install: before_install:
#- if [ "$DEPLOY" = "true" ]; then ./travis-setup-deploy.sh; fi #- if [ "$DEPLOY" = "true" ]; then ./travis-setup-deploy.sh; fi
- "./travis-install.sh" - "./travis-install.sh"

View File

@ -92,7 +92,7 @@ Variable | Default Value | Description
PAHO_BUILD_SHARED | TRUE | Build a shared version of the libraries PAHO_BUILD_SHARED | TRUE | Build a shared version of the libraries
PAHO_BUILD_STATIC | FALSE | Build a static version of the libraries PAHO_BUILD_STATIC | FALSE | Build a static version of the libraries
PAHO_WITH_SSL | FALSE | Flag that defines whether to build ssl-enabled binaries too. PAHO_WITH_SSL | FALSE | Flag that defines whether to build ssl-enabled binaries too.
OPENSSL_SEARCH_PATH | "" (system default) | Directory containing your OpenSSL installation (i.e. `/usr/local` when headers are in `/usr/local/include` and libraries are in `/usr/local/lib`) OPENSSL_ROOT_DIR | "" (system default) | Directory containing your OpenSSL installation (i.e. `/usr/local` when headers are in `/usr/local/include` and libraries are in `/usr/local/lib`)
PAHO_BUILD_DOCUMENTATION | FALSE | Create and install the HTML based API documentation (requires Doxygen) PAHO_BUILD_DOCUMENTATION | FALSE | Create and install the HTML based API documentation (requires Doxygen)
PAHO_BUILD_SAMPLES | FALSE | Build sample programs PAHO_BUILD_SAMPLES | FALSE | Build sample programs
MQTT_TEST_BROKER | tcp://localhost:1883 | MQTT connection URL for a broker to use during test execution MQTT_TEST_BROKER | tcp://localhost:1883 | MQTT connection URL for a broker to use during test execution

View File

@ -4,14 +4,17 @@ environment:
matrix: matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
PAHO_WINDOWS_BUILD_BIT: x86 PAHO_WINDOWS_BUILD_BIT: x86
OPENSSL_ROOT_DIR: "C:/OpenSSL-Win32"
PAHO_BUILD_STATIC: FALSE PAHO_BUILD_STATIC: FALSE
PAHO_BUILD_SHARED: TRUE PAHO_BUILD_SHARED: TRUE
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
PAHO_WINDOWS_BUILD_BIT: x64 PAHO_WINDOWS_BUILD_BIT: x64
PENSSL_ROOT_DIR: "C:/OpenSSL-Win64"
PAHO_BUILD_STATIC: FALSE PAHO_BUILD_STATIC: FALSE
PAHO_BUILD_SHARED: TRUE PAHO_BUILD_SHARED: TRUE
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
PAHO_WINDOWS_BUILD_BIT: x64 PAHO_WINDOWS_BUILD_BIT: x64
PENSSL_ROOT_DIR: "C:/OpenSSL-Win64"
PAHO_BUILD_STATIC: TRUE PAHO_BUILD_STATIC: TRUE
PAHO_BUILD_SHARED: FALSE PAHO_BUILD_SHARED: FALSE
@ -40,7 +43,7 @@ build_script:
if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2013" call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %PAHO_WINDOWS_BUILD_BIT% if "%APPVEYOR_BUILD_WORKER_IMAGE%" == "Visual Studio 2013" call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %PAHO_WINDOWS_BUILD_BIT%
cmake -G "NMake Makefiles" -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=TRUE -DPAHO_BUILD_STATIC=%PAHO_BUILD_STATIC% -DPAHO_BUILD_SHARED=%PAHO_BUILD_SHARED% .. cmake -G "NMake Makefiles" -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=%OPENSSL_ROOT_DIR% -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=TRUE -DPAHO_BUILD_STATIC=%PAHO_BUILD_STATIC% -DPAHO_BUILD_SHARED=%PAHO_BUILD_SHARED% ..
nmake nmake

View File

@ -111,6 +111,24 @@ IF (PAHO_BUILD_SHARED)
VERSION ${CLIENT_VERSION} VERSION ${CLIENT_VERSION}
SOVERSION ${PAHO_VERSION_MAJOR} SOVERSION ${PAHO_VERSION_MAJOR}
DEFINE_SYMBOL "MQTT_EXPORTS") DEFINE_SYMBOL "MQTT_EXPORTS")
IF(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET(MQTTCLIENT_ENTRY_POINT _MQTTClient_init)
SET(MQTTASYNC_ENTRY_POINT _MQTTAsync_init)
ELSEIF (NOT WIN32)
SET(MQTTCLIENT_ENTRY_POINT MQTTClient_init)
SET(MQTTASYNC_ENTRY_POINT MQTTAsync_init)
ENDIF()
IF (NOT WIN32)
SET_TARGET_PROPERTIES(
paho-mqtt3c PROPERTIES
LINK_FLAGS "-Wl,-init,${MQTTCLIENT_ENTRY_POINT}")
SET_TARGET_PROPERTIES(
paho-mqtt3a PROPERTIES
LINK_FLAGS "-Wl,-init,${MQTTASYNC_ENTRY_POINT}")
ENDIF()
FOREACH(TARGET paho-mqtt3c paho-mqtt3a) FOREACH(TARGET paho-mqtt3c paho-mqtt3a)
TARGET_INCLUDE_DIRECTORIES(${TARGET} TARGET_INCLUDE_DIRECTORIES(${TARGET}
PUBLIC PUBLIC
@ -166,48 +184,13 @@ INSTALL(FILES MQTTAsync.h MQTTClient.h MQTTClientPersistence.h MQTTProperties.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
IF (PAHO_WITH_SSL) IF (PAHO_WITH_SSL)
SET(OPENSSL_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL libraries and includes") SET(OPENSSL_ROOT_DIR "" CACHE PATH "Directory containing OpenSSL libraries and includes")
find_package(OpenSSL REQUIRED)
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
IF(OPENSSL_SEARCH_PATH STREQUAL "")
SET(OPENSSL_SEARCH_PATH "/usr/local/opt/openssl")
ENDIF ()
ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
IF (WIN32)
IF(OPENSSL_SEARCH_PATH STREQUAL "")
SET(OPENSSL_SEARCH_PATH "C:/OpenSSL-Win64")
SET(OPENSSL_SEARCH_LIB_PATH "${OPENSSL_SEARCH_PATH}/lib64")
IF (DEFINED ENV{PAHO_WINDOWS_BUILD_BIT})
IF ($ENV{PAHO_WINDOWS_BUILD_BIT} STREQUAL "x86")
SET(OPENSSL_SEARCH_PATH "C:/OpenSSL-Win32")
SET(OPENSSL_SEARCH_LIB_PATH "${OPENSSL_SEARCH_PATH}/lib32")
ENDIF ()
ENDIF ()
ENDIF ()
ELSE()
SET(OPENSSL_SEARCH_LIB_PATH "${OPENSSL_SEARCH_PATH}/lib64")
ENDIF ()
FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h
HINTS ${OPENSSL_SEARCH_PATH}/include)
FIND_LIBRARY(OPENSSL_LIB NAMES ssl libssl ssleay32
HINTS ${OPENSSL_SEARCH_PATH}/lib ${OPENSSL_SEARCH_LIB_PATH})
FIND_LIBRARY(OPENSSLCRYPTO_LIB NAMES crypto libcrypto libeay32
HINTS ${OPENSSL_SEARCH_PATH}/lib ${OPENSSL_SEARCH_LIB_PATH})
MESSAGE(STATUS "OpenSSL hints: ${OPENSSL_SEARCH_PATH}")
MESSAGE(STATUS "OpenSSL headers found at ${OPENSSL_INCLUDE_DIR}")
MESSAGE(STATUS "OpenSSL library found at ${OPENSSL_LIB}")
MESSAGE(STATUS "OpenSSL Crypto library found at ${OPENSSLCRYPTO_LIB}")
INCLUDE_DIRECTORIES(
${OPENSSL_INCLUDE_DIR}
)
## common compilation for libpaho-mqtt3cs and libpaho-mqtt3as ## common compilation for libpaho-mqtt3cs and libpaho-mqtt3as
## Note: SSL libraries must be recompiled due ifdefs ## Note: SSL libraries must be recompiled due ifdefs
ADD_LIBRARY(common_ssl_obj OBJECT ${common_src}) ADD_LIBRARY(common_ssl_obj OBJECT ${common_src})
TARGET_INCLUDE_DIRECTORIES(common_ssl_obj PUBLIC ${OPENSSL_INCLUDE_DIR})
SET_PROPERTY(TARGET common_ssl_obj PROPERTY POSITION_INDEPENDENT_CODE ON) SET_PROPERTY(TARGET common_ssl_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;MQTT_EXPORTS=1") SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;MQTT_EXPORTS=1")
@ -215,14 +198,30 @@ IF (PAHO_WITH_SSL)
ADD_LIBRARY(paho-mqtt3cs SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c) ADD_LIBRARY(paho-mqtt3cs SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c)
ADD_LIBRARY(paho-mqtt3as SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c) ADD_LIBRARY(paho-mqtt3as SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c)
TARGET_LINK_LIBRARIES(paho-mqtt3cs ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3as ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
SET_TARGET_PROPERTIES( SET_TARGET_PROPERTIES(
paho-mqtt3cs paho-mqtt3as PROPERTIES paho-mqtt3cs paho-mqtt3as PROPERTIES
VERSION ${CLIENT_VERSION} VERSION ${CLIENT_VERSION}
SOVERSION ${PAHO_VERSION_MAJOR} SOVERSION ${PAHO_VERSION_MAJOR}
COMPILE_DEFINITIONS "OPENSSL=1" COMPILE_DEFINITIONS "OPENSSL=1"
DEFINE_SYMBOL "MQTT_EXPORTS") DEFINE_SYMBOL "MQTT_EXPORTS")
IF(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET(MQTTCLIENT_ENTRY_POINT _MQTTClient_init)
SET(MQTTASYNC_ENTRY_POINT _MQTTAsync_init)
ELSEIF (NOT WIN32)
SET(MQTTCLIENT_ENTRY_POINT MQTTClient_init)
SET(MQTTASYNC_ENTRY_POINT MQTTAsync_init)
ENDIF()
IF (NOT WIN32)
SET_TARGET_PROPERTIES(
paho-mqtt3cs PROPERTIES
LINK_FLAGS "-Wl,-init,${MQTTCLIENT_ENTRY_POINT}")
SET_TARGET_PROPERTIES(
paho-mqtt3as PROPERTIES
LINK_FLAGS "-Wl,-init,${MQTTASYNC_ENTRY_POINT}")
ENDIF()
FOREACH(TARGET paho-mqtt3cs paho-mqtt3as) FOREACH(TARGET paho-mqtt3cs paho-mqtt3as)
TARGET_INCLUDE_DIRECTORIES(${TARGET} TARGET_INCLUDE_DIRECTORIES(${TARGET}
PUBLIC PUBLIC
@ -230,6 +229,9 @@ IF (PAHO_WITH_SSL)
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
PRIVATE PRIVATE
${CMAKE_BINARY_DIR}) ${CMAKE_BINARY_DIR})
TARGET_LINK_LIBRARIES(${TARGET}
PUBLIC
OpenSSL::SSL OpenSSL::Crypto ${LIBS_SYSTEM})
ENDFOREACH() ENDFOREACH()
INSTALL(TARGETS paho-mqtt3cs paho-mqtt3as INSTALL(TARGETS paho-mqtt3cs paho-mqtt3as
EXPORT eclipse-paho-mqtt-cTargets EXPORT eclipse-paho-mqtt-cTargets
@ -242,8 +244,6 @@ IF (PAHO_WITH_SSL)
ADD_LIBRARY(paho-mqtt3cs-static STATIC $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c) ADD_LIBRARY(paho-mqtt3cs-static STATIC $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c)
ADD_LIBRARY(paho-mqtt3as-static STATIC $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c) ADD_LIBRARY(paho-mqtt3as-static STATIC $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c)
TARGET_LINK_LIBRARIES(paho-mqtt3cs-static ${OPENSSL_LIBRARIES} ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3as-static ${OPENSSL_LIBRARIES} ${LIBS_SYSTEM})
SET_TARGET_PROPERTIES( SET_TARGET_PROPERTIES(
paho-mqtt3cs-static paho-mqtt3as-static PROPERTIES paho-mqtt3cs-static paho-mqtt3as-static PROPERTIES
VERSION ${CLIENT_VERSION} VERSION ${CLIENT_VERSION}
@ -255,6 +255,23 @@ IF (PAHO_WITH_SSL)
SET_TARGET_PROPERTIES(paho-mqtt3as-static PROPERTIES OUTPUT_NAME paho-mqtt3as) SET_TARGET_PROPERTIES(paho-mqtt3as-static PROPERTIES OUTPUT_NAME paho-mqtt3as)
ENDIF() ENDIF()
IF(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET(MQTTCLIENT_ENTRY_POINT _MQTTClient_init)
SET(MQTTASYNC_ENTRY_POINT _MQTTAsync_init)
ELSEIF (NOT WIN32)
SET(MQTTCLIENT_ENTRY_POINT MQTTClient_init)
SET(MQTTASYNC_ENTRY_POINT MQTTAsync_init)
ENDIF()
IF (NOT WIN32)
SET_TARGET_PROPERTIES(
paho-mqtt3cs-static PROPERTIES
LINK_FLAGS "-Wl,-init,${MQTTCLIENT_ENTRY_POINT}")
SET_TARGET_PROPERTIES(
paho-mqtt3as-static PROPERTIES
LINK_FLAGS "-Wl,-init,${MQTTASYNC_ENTRY_POINT}")
ENDIF()
IF (NOT PAHO_BUILD_SHARED) IF (NOT PAHO_BUILD_SHARED)
INSTALL(TARGETS paho-mqtt3cs-static paho-mqtt3as-static INSTALL(TARGETS paho-mqtt3cs-static paho-mqtt3as-static
EXPORT eclipse-paho-mqtt-cTargets EXPORT eclipse-paho-mqtt-cTargets
@ -272,6 +289,9 @@ IF (PAHO_WITH_SSL)
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
PRIVATE PRIVATE
${CMAKE_BINARY_DIR}) ${CMAKE_BINARY_DIR})
TARGET_LINK_LIBRARIES(${TARGET}
PUBLIC
OpenSSL::SSL OpenSSL::Crypto ${LIBS_SYSTEM})
ENDFOREACH() ENDFOREACH()
ENDIF() ENDIF()
ENDIF() ENDIF()
@ -294,7 +314,7 @@ ADD_EXECUTABLE( Base64Test EXCLUDE_FROM_ALL Base64.c Base64.h )
TARGET_COMPILE_DEFINITIONS( Base64Test PUBLIC "-DBASE64_TEST" ) TARGET_COMPILE_DEFINITIONS( Base64Test PUBLIC "-DBASE64_TEST" )
IF (PAHO_WITH_SSL) IF (PAHO_WITH_SSL)
ADD_EXECUTABLE( Base64TestOpenSSL EXCLUDE_FROM_ALL Base64.c Base64.h ) ADD_EXECUTABLE( Base64TestOpenSSL EXCLUDE_FROM_ALL Base64.c Base64.h )
TARGET_LINK_LIBRARIES( Base64TestOpenSSL ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ) TARGET_LINK_LIBRARIES( Base64TestOpenSSL OpenSSL::SSL OpenSSL::Crypto)
TARGET_COMPILE_DEFINITIONS( Base64TestOpenSSL PUBLIC "-DBASE64_TEST -DOPENSSL=1" ) TARGET_COMPILE_DEFINITIONS( Base64TestOpenSSL PUBLIC "-DBASE64_TEST -DOPENSSL=1" )
ENDIF (PAHO_WITH_SSL) ENDIF (PAHO_WITH_SSL)
@ -303,6 +323,6 @@ ADD_EXECUTABLE( Sha1Test EXCLUDE_FROM_ALL SHA1.c SHA1.h )
TARGET_COMPILE_DEFINITIONS( Sha1Test PUBLIC "-DSHA1_TEST" ) TARGET_COMPILE_DEFINITIONS( Sha1Test PUBLIC "-DSHA1_TEST" )
IF (PAHO_WITH_SSL) IF (PAHO_WITH_SSL)
ADD_EXECUTABLE( Sha1TestOpenSSL EXCLUDE_FROM_ALL SHA1.c SHA1.h ) ADD_EXECUTABLE( Sha1TestOpenSSL EXCLUDE_FROM_ALL SHA1.c SHA1.h )
TARGET_LINK_LIBRARIES( Sha1TestOpenSSL ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ) TARGET_LINK_LIBRARIES( Sha1TestOpenSSL OpenSSL::SSL OpenSSL::Crypto)
TARGET_COMPILE_DEFINITIONS( Sha1TestOpenSSL PUBLIC "-DSHA1_TEST -DOPENSSL=1" ) TARGET_COMPILE_DEFINITIONS( Sha1TestOpenSSL PUBLIC "-DSHA1_TEST -DOPENSSL=1" )
ENDIF (PAHO_WITH_SSL) ENDIF (PAHO_WITH_SSL)

View File

@ -56,7 +56,9 @@ static mutex_type heap_mutex = &heap_mutex_store;
#endif #endif
static heap_info state = {0, 0}; /**< global heap state information */ static heap_info state = {0, 0}; /**< global heap state information */
static int eyecatcher = 0x88888888;
typedef double eyecatcherType;
static eyecatcherType eyecatcher = 0x8888888888888888;
/*#define HEAP_STACK 1 */ /*#define HEAP_STACK 1 */
@ -193,39 +195,39 @@ void* mymalloc(char* file, int line, size_t size)
#endif #endif
s->line = line; s->line = line;
/* Add space for eyecatcher at each end */ /* Add space for eyecatcher at each end */
if ((s->ptr = malloc(size + 2*sizeof(int))) == NULL) if ((s->ptr = malloc(size + 2*sizeof(eyecatcherType))) == NULL)
{ {
Log(LOG_ERROR, 13, errmsg); Log(LOG_ERROR, 13, errmsg);
free(s->file); free(s->file);
free(s); free(s);
return NULL; return NULL;
} }
memset(s->ptr, 0, size + 2*sizeof(int)); memset(s->ptr, 0, size + 2*sizeof(eyecatcherType));
space += size + 2*sizeof(int); space += size + 2*sizeof(eyecatcherType);
*(int*)(s->ptr) = eyecatcher; /* start eyecatcher */ *(eyecatcherType*)(s->ptr) = eyecatcher; /* start eyecatcher */
*(int*)(((char*)(s->ptr)) + (sizeof(int) + size)) = eyecatcher; /* end eyecatcher */ *(eyecatcherType*)(((char*)(s->ptr)) + (sizeof(eyecatcherType) + size)) = eyecatcher; /* end eyecatcher */
Log(TRACE_MAX, -1, "Allocating %d bytes in heap at file %s line %d ptr %p\n", (int)size, file, line, s->ptr); Log(TRACE_MAX, -1, "Allocating %d bytes in heap at file %s line %d ptr %p\n", (int)size, file, line, s->ptr);
TreeAdd(&heap, s, space); TreeAdd(&heap, s, space);
state.current_size += size; state.current_size += size;
if (state.current_size > state.max_size) if (state.current_size > state.max_size)
state.max_size = state.current_size; state.max_size = state.current_size;
Thread_unlock_mutex(heap_mutex); Thread_unlock_mutex(heap_mutex);
return ((int*)(s->ptr)) + 1; /* skip start eyecatcher */ return ((eyecatcherType*)(s->ptr)) + 1; /* skip start eyecatcher */
} }
static void checkEyecatchers(char* file, int line, void* p, size_t size) static void checkEyecatchers(char* file, int line, void* p, size_t size)
{ {
int *sp = (int*)p; eyecatcherType *sp = (eyecatcherType*)p;
char *cp = (char*)p; char *cp = (char*)p;
int us; eyecatcherType us;
static const char *msg = "Invalid %s eyecatcher %d in heap item at file %s line %d"; static const char *msg = "Invalid %s eyecatcher %d in heap item at file %s line %d";
if ((us = *--sp) != eyecatcher) if ((us = *--sp) != eyecatcher)
Log(LOG_ERROR, 13, msg, "start", us, file, line); Log(LOG_ERROR, 13, msg, "start", us, file, line);
cp += size; cp += size;
if ((us = *(int*)cp) != eyecatcher) if ((us = *(eyecatcherType*)cp) != eyecatcher)
Log(LOG_ERROR, 13, msg, "end", us, file, line); Log(LOG_ERROR, 13, msg, "end", us, file, line);
} }
@ -242,7 +244,7 @@ static int Internal_heap_unlink(char* file, int line, void* p)
Node* e = NULL; Node* e = NULL;
int rc = 0; int rc = 0;
e = TreeFind(&heap, ((int*)p)-1); e = TreeFind(&heap, ((eyecatcherType*)p)-1);
if (e == NULL) if (e == NULL)
Log(LOG_ERROR, 13, "Failed to remove heap item at file %s line %d", file, line); Log(LOG_ERROR, 13, "Failed to remove heap item at file %s line %d", file, line);
else else
@ -275,7 +277,7 @@ void myfree(char* file, int line, void* p)
{ {
Thread_lock_mutex(heap_mutex); Thread_lock_mutex(heap_mutex);
if (Internal_heap_unlink(file, line, p)) if (Internal_heap_unlink(file, line, p))
free(((int*)p)-1); free(((eyecatcherType*)p)-1);
Thread_unlock_mutex(heap_mutex); Thread_unlock_mutex(heap_mutex);
} }
else else
@ -318,7 +320,7 @@ void *myrealloc(char* file, int line, void* p, size_t size)
storageElement* s = NULL; storageElement* s = NULL;
Thread_lock_mutex(heap_mutex); Thread_lock_mutex(heap_mutex);
s = TreeRemoveKey(&heap, ((int*)p)-1); s = TreeRemoveKey(&heap, ((eyecatcherType*)p)-1);
if (s == NULL) if (s == NULL)
Log(LOG_ERROR, 13, "Failed to reallocate heap item at file %s line %d", file, line); Log(LOG_ERROR, 13, "Failed to reallocate heap item at file %s line %d", file, line);
else else
@ -331,14 +333,14 @@ void *myrealloc(char* file, int line, void* p, size_t size)
state.current_size += size - s->size; state.current_size += size - s->size;
if (state.current_size > state.max_size) if (state.current_size > state.max_size)
state.max_size = state.current_size; state.max_size = state.current_size;
if ((s->ptr = realloc(s->ptr, size + 2*sizeof(int))) == NULL) if ((s->ptr = realloc(s->ptr, size + 2*sizeof(eyecatcherType))) == NULL)
{ {
Log(LOG_ERROR, 13, errmsg); Log(LOG_ERROR, 13, errmsg);
return NULL; return NULL;
} }
space += size + 2*sizeof(int) - s->size; space += size + 2*sizeof(eyecatcherType) - s->size;
*(int*)(s->ptr) = eyecatcher; /* start eyecatcher */ *(eyecatcherType*)(s->ptr) = eyecatcher; /* start eyecatcher */
*(int*)(((char*)(s->ptr)) + (sizeof(int) + size)) = eyecatcher; /* end eyecatcher */ *(eyecatcherType*)(((char*)(s->ptr)) + (sizeof(eyecatcherType) + size)) = eyecatcher; /* end eyecatcher */
s->size = size; s->size = size;
space -= strlen(s->file); space -= strlen(s->file);
s->file = realloc(s->file, filenamelen); s->file = realloc(s->file, filenamelen);
@ -349,7 +351,7 @@ void *myrealloc(char* file, int line, void* p, size_t size)
TreeAdd(&heap, s, space); TreeAdd(&heap, s, space);
} }
Thread_unlock_mutex(heap_mutex); Thread_unlock_mutex(heap_mutex);
return (rc == NULL) ? NULL : ((int*)(rc)) + 1; /* skip start eyecatcher */ return (rc == NULL) ? NULL : ((eyecatcherType*)(rc)) + 1; /* skip start eyecatcher */
} }
@ -364,7 +366,7 @@ void* Heap_findItem(void* p)
Node* e = NULL; Node* e = NULL;
Thread_lock_mutex(heap_mutex); Thread_lock_mutex(heap_mutex);
e = TreeFind(&heap, ((int*)p)-1); e = TreeFind(&heap, ((eyecatcherType*)p)-1);
Thread_unlock_mutex(heap_mutex); Thread_unlock_mutex(heap_mutex);
return (e == NULL) ? NULL : e->content; return (e == NULL) ? NULL : e->content;
} }
@ -384,7 +386,7 @@ static void HeapScan(enum LOG_LEVELS log_level)
{ {
storageElement* s = (storageElement*)(current->content); storageElement* s = (storageElement*)(current->content);
Log(log_level, -1, "Heap element size %d, line %d, file %s, ptr %p", (int)s->size, s->line, s->file, s->ptr); Log(log_level, -1, "Heap element size %d, line %d, file %s, ptr %p", (int)s->size, s->line, s->file, s->ptr);
Log(log_level, -1, " Content %.*s", (10 > current->size) ? (int)s->size : 10, (char*)(((int*)s->ptr) + 1)); Log(log_level, -1, " Content %.*s", (10 > current->size) ? (int)s->size : 10, (char*)(((eyecatcherType*)s->ptr) + 1));
#if defined(HEAP_STACK) #if defined(HEAP_STACK)
Log(log_level, -1, " Stack:\n%s", s->stack); Log(log_level, -1, " Stack:\n%s", s->stack);
#endif #endif

View File

@ -474,7 +474,7 @@ void WebSocket_close(networkHandles *net, int status_code, const char *reason)
char *buf0; char *buf0;
size_t buf0len = sizeof(uint16_t); size_t buf0len = sizeof(uint16_t);
uint16_t status_code_be; uint16_t status_code_be;
const int mask_data = 0; const int mask_data = 1; /* all frames from client must be masked */
if ( status_code < WebSocket_CLOSE_NORMAL || if ( status_code < WebSocket_CLOSE_NORMAL ||
status_code > WebSocket_CLOSE_TLS_FAIL ) status_code > WebSocket_CLOSE_TLS_FAIL )
@ -805,11 +805,10 @@ void WebSocket_pong(networkHandles *net, char *app_data, size_t app_data_len)
char *buf0 = NULL; char *buf0 = NULL;
size_t buf0len = 0; size_t buf0len = 0;
int freeData = 0; int freeData = 0;
const int mask_data = 0; const int mask_data = 1; /* all frames from client must be masked */
WebSocket_buildFrame( net, WebSocket_OP_PONG, 1, WebSocket_buildFrame( net, WebSocket_OP_PONG, mask_data,
&buf0, &buf0len, mask_data, &app_data, &buf0, &buf0len, 1, &app_data, &app_data_len);
&app_data_len);
Log(TRACE_PROTOCOL, 1, "Sending WebSocket PONG" ); Log(TRACE_PROTOCOL, 1, "Sending WebSocket PONG" );

View File

@ -73,10 +73,10 @@ ADD_EXECUTABLE(paho_c_sub_static paho_c_sub.c pubsub_opts.c)
ADD_EXECUTABLE(paho_cs_pub_static paho_cs_pub.c pubsub_opts.c) ADD_EXECUTABLE(paho_cs_pub_static paho_cs_pub.c pubsub_opts.c)
ADD_EXECUTABLE(paho_cs_sub_static paho_cs_sub.c pubsub_opts.c) ADD_EXECUTABLE(paho_cs_sub_static paho_cs_sub.c pubsub_opts.c)
TARGET_LINK_LIBRARIES(paho_c_pub_static paho-mqtt3as-static ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB}) TARGET_LINK_LIBRARIES(paho_c_pub_static paho-mqtt3as-static)
TARGET_LINK_LIBRARIES(paho_c_sub_static paho-mqtt3as-static ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB}) TARGET_LINK_LIBRARIES(paho_c_sub_static paho-mqtt3as-static)
TARGET_LINK_LIBRARIES(paho_cs_pub_static paho-mqtt3cs-static ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB}) TARGET_LINK_LIBRARIES(paho_cs_pub_static paho-mqtt3cs-static)
TARGET_LINK_LIBRARIES(paho_cs_sub_static paho-mqtt3cs-static ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB}) TARGET_LINK_LIBRARIES(paho_cs_sub_static paho-mqtt3cs-static)
ENDIF() ENDIF()

View File

@ -7,37 +7,6 @@ SET(MQTT_SSL_HOSTNAME "localhost" CACHE STRING "Hostname of a test SSL MQTT brok
SET(CERTDIR ${CMAKE_SOURCE_DIR}/test/ssl) SET(CERTDIR ${CMAKE_SOURCE_DIR}/test/ssl)
IF (PAHO_WITH_SSL)
SET(OPENSSL_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL libraries and includes")
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
IF(OPENSSL_SEARCH_PATH STREQUAL "")
SET(OPENSSL_SEARCH_PATH "/usr/local/opt/openssl")
ENDIF ()
ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
IF (WIN32)
IF(OPENSSL_SEARCH_PATH STREQUAL "")
SET(OPENSSL_SEARCH_PATH "C:/OpenSSL-Win64")
IF (DEFINED ENV{PAHO_WINDOWS_BUILD_BIT})
IF ($ENV{PAHO_WINDOWS_BUILD_BIT} STREQUAL "x86")
SET(OPENSSL_SEARCH_PATH "C:/OpenSSL-Win32")
ENDIF ()
ENDIF ()
ENDIF ()
ENDIF ()
FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h
HINTS ${OPENSSL_SEARCH_PATH}/include)
MESSAGE(STATUS "OpenSSL hints: ${OPENSSL_SEARCH_PATH}")
MESSAGE(STATUS "OpenSSL headers found at ${OPENSSL_INCLUDE_DIR}")
INCLUDE_DIRECTORIES(
${OPENSSL_INCLUDE_DIR}
)
ENDIF ()
IF (WIN32) IF (WIN32)
SET(LIBS_SYSTEM ws2_32) SET(LIBS_SYSTEM ws2_32)
ELSEIF (UNIX) ELSEIF (UNIX)
@ -357,7 +326,7 @@ IF (PAHO_WITH_SSL)
) )
TARGET_LINK_LIBRARIES( TARGET_LINK_LIBRARIES(
test3-static test3-static
paho-mqtt3cs-static ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} paho-mqtt3cs-static
) )
ADD_TEST( ADD_TEST(
@ -684,7 +653,7 @@ IF (PAHO_BUILD_STATIC)
ADD_TEST( ADD_TEST(
NAME test45-7-pending-tokens-static NAME test45-7-pending-tokens-static
COMMAND test45-static "--test_no" "7" --verbose "--connection" ${MQTT_TEST_BROKER} COMMAND test45-static "--test_no" "7" "--connection" ${MQTT_TEST_BROKER}
) )
ADD_TEST( ADD_TEST(
@ -747,7 +716,7 @@ IF (PAHO_BUILD_SHARED)
ADD_TEST( ADD_TEST(
NAME test45-7-pending-tokens NAME test45-7-pending-tokens
COMMAND test45 "--test_no" "7" --verbose "--connection" ${MQTT_TEST_BROKER} COMMAND test45 "--test_no" "7" "--connection" ${MQTT_TEST_BROKER}
) )
ADD_TEST( ADD_TEST(
@ -777,7 +746,7 @@ IF (PAHO_WITH_SSL)
TARGET_LINK_LIBRARIES( TARGET_LINK_LIBRARIES(
test5-static test5-static
paho-mqtt3as-static ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} paho-mqtt3as-static
) )
ADD_TEST( ADD_TEST(

View File

@ -774,7 +774,7 @@ int test2a(struct Options options)
fprintf(xml, "<testcase classname=\"test5\" name=\"%s\"", testname); fprintf(xml, "<testcase classname=\"test5\" name=\"%s\"", testname);
global_start_time = start_clock(); global_start_time = start_clock();
MQTTAsync_create(&c, options.mutual_auth_connection, "test2a", MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); rc = MQTTAsync_create(&c, options.mutual_auth_connection, "test2a", MQTTCLIENT_PERSISTENCE_DEFAULT, NULL);
assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d\n", rc); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d\n", rc);
if (rc != MQTTASYNC_SUCCESS) if (rc != MQTTASYNC_SUCCESS)
goto exit; goto exit;

View File

@ -5,9 +5,9 @@ set -e
rm -rf build.paho rm -rf build.paho
mkdir build.paho mkdir build.paho
cd build.paho cd build.paho
echo "travis build dir $TRAVIS_BUILD_DIR pwd $PWD" echo "travis build dir $TRAVIS_BUILD_DIR pwd $PWD with OpenSSL root $OPENSSL_ROOT_DIR"
cmake -DCMAKE_BUILD_TYPE=Debug -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE .. cmake -DCMAKE_BUILD_TYPE=Debug -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=$OPENSSL_ROOT_DIR -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE ..
make cmake --build .
python3 ../test/mqttsas.py & python3 ../test/mqttsas.py &
ctest -VV --timeout 600 ctest -VV --timeout 600
cpack --verbose cpack --verbose

View File

@ -1,2 +0,0 @@
export TRAVIS_OS_NAME=linux
export TRAVIS_BUILD_DIR=$PWD

View File

@ -1,2 +0,0 @@
export TRAVIS_OS_NAME=osx
export TRAVIS_BUILD_DIR=$PWD