-# this file should contain ONLY the changes related to the
+# this file should contain ONLY the changes related to the
# core RMR code and doc. Other change files exist for other
# things.
# API and build change and fix summaries. Doc correctsions
# and/or changes are not mentioned here; see the commit messages.
+2020 April 2; version 3.6.5
+ Correct potential nil pointer use when examining interfaces for
+ use as a listen target (RIC-307)
+
2020 April 1; version 3.6.4
Correct potential nil pointer use in the NNG interface (RIC-303)
Correct issue preventing CI build without a container
Correct the max receive message size constant in rmr.h (RIC-301)
2020 March 23; version 3.6.2
- Fix message initialisation bug when pulling a message from
+ Fix message initialisation bug when pulling a message from
the pool (RIC-295)
2020 March 19; version 3.6.1
2020 March 10; version 3.5.1
Add missing health check message types.
-
+
2020 March 9; version 3.5.0
Added new wormhole send function: rmr_wh_call().
2020 January 31; verison 3.1.1
Allow route table thread logging to be completely disabled
- when logging is turned off.
+ when logging is turned off.
2020 January 26; verison 3.1.0
First step to allowing the user programme to control messages
2019 November 7; version 1.12.0
Version cut to support continued development for next release
- preserving the 1.11.* versions for release 1 (Amber) and
+ preserving the 1.11.* versions for release 1 (Amber) and
related fixes.
2019 October 31; version 1.10.2
set( major_version "3" ) # should be automatically populated from git tag later, but until CI process sets a tag we use this
set( minor_version "6" )
-set( patch_level "4" )
+set( patch_level "5" )
set( install_root "${CMAKE_INSTALL_PREFIX}" )
set( install_inc "include/rmr" )
if( ele && strcmp( ele->ifa_name, "lo" ) && // do NOT capture the loopback interface address
(target_if == NULL || strcmp( ele->ifa_name, target_if ) == 0 ) ) { // no target, or matches ENV_BIND_IF target
- if( ele->ifa_addr->sa_family == AF_INET ) {
- getnameinfo( ele->ifa_addr, sizeof( struct sockaddr_in ), octs, NI_MAXHOST, NULL, 0, NI_NUMERICHOST );
- fmt = "%s:%s";
- } else {
- if( ele->ifa_addr->sa_family == AF_INET6 ) {
- getnameinfo( ele->ifa_addr, sizeof( struct sockaddr_in6 ), octs, NI_MAXHOST, NULL, 0, NI_NUMERICHOST );
- fmt = "[%s]:%s";
+ if( ele->ifa_addr != NULL ) { // possible for some interfaces to not have an address
+ if( ele->ifa_addr->sa_family == AF_INET ) {
+ getnameinfo( ele->ifa_addr, sizeof( struct sockaddr_in ), octs, NI_MAXHOST, NULL, 0, NI_NUMERICHOST );
+ fmt = "%s:%s";
+ } else {
+ if( ele->ifa_addr->sa_family == AF_INET6 ) {
+ getnameinfo( ele->ifa_addr, sizeof( struct sockaddr_in6 ), octs, NI_MAXHOST, NULL, 0, NI_NUMERICHOST );
+ fmt = "[%s]:%s";
+ }
}
}
iptr = SInew( IOQ_BLK );
errors += fail_if_nil( iptr, "memory: sinew returned nil when given ioq request" );
- iptr = SInew( IOQ_BLK );
SItrash( IOQ_BLK, iptr );
ptr = SInew( TP_BLK );
errors += fail_if_nil( ptr, "memory: sinew returned nil when given tpblk request" );
if( ptr ) {
+ iptr = SInew( IOQ_BLK );
((struct tp_blk *)ptr)->squeue = iptr;
SItrash( TP_BLK, ptr );
}
ptr = SInew( GI_BLK );
errors += fail_if_nil( ptr, "memory: sinew returned nil when given giblk request" );
- SItrash( GI_BLK, ptr );
+ SItrash( GI_BLK, ptr ); // GI block cannot be trashed, ensure this (valgind will complain about a leak)
return errors;