The age check was causing some address were ignored during connect attempt,
this was disastrous expecially for sporadic users which completely
lost capability to connect to any node, even if the IPs neve changes!
Old addresses triagin is handled elsewhere so ignoring them in connect attempt
only generate very counter-intuitive situations for the user, as
addressed still listed in potential address list were never attempted.
Make reduntant auth check in pqi effective (even if redundant only
siganture was checked but friendess wasn't)
Evidence redundant auth check in pqi by putting it inside #ifdef this
way the beaviior being the same with and without redundat check can be
verified easier
Solve lot of compiler warnings and made code more readable
Remove dangerous sslcert wrapper
Remove misleading messeges and notification about peer not giving cert,
FailedCertificate logic is wrong since many years as authentication is
fully handled inside VerifyX509Callback
Creating GXS groups imply a bunch of crypto operations that require lot
of time expecially on embedded device, channel creation was reported
as failed while it was still pending.
Reduce too long lines.
Print API error messages also on std::cerr.
Caused by unneeded pointer usages + not enough careful IPv6 porting
I haven't managed to reproduce the crash nor to test the fix due it
happening only when UDP relayed connection happens (apparently never on
my nodes.
I have managed to discover where the bug comes from thanks to multiple
user reports, specially to Ilario report which documented 3 crashes
happening on 0.6.4 with complete log.
Avoid problems to serialization on different platforms, without breaking
nested STL containers serialization.
The conversion have been made with sed, and checked with grep, plus
kdiff3 visual ispection, plus rutime tests, so it should be fine.
/libretroshare/src/pqi/authssl.cc:160: warning: ‘void
dyn_destroy_function(CRYPTO_dynlock_value*, const char*, int)’ defined
but not used [-Wunused-function]
static void dyn_destroy_function(struct CRYPTO_dynlock_value *l, const
char */*file*/, int /*line*/)
/libretroshare/src/pqi/authssl.cc:143: warning: ‘void
dyn_lock_function(int, CRYPTO_dynlock_value*, const char*, int)’ defined
but not used [-Wunused-function]
static void dyn_lock_function(int mode, struct CRYPTO_dynlock_value *l,
const char */*file*/, int /*line*/)
/libretroshare/src/pqi/authssl.cc:121: warning: ‘CRYPTO_dynlock_value*
dyn_create_function(const char*, int)’ defined but not used [-Wunused-
function]
static struct CRYPTO_dynlock_value *dyn_create_function(const char */
*file*/, int /*line*/)
/libretroshare/src/pqi/authssl.cc:106: warning: ‘long unsigned int
id_function()’ defined but not used [-Wunused-function]
static unsigned long id_function(void)
/libretroshare/src/pqi/authssl.cc:92: warning: ‘void
locking_function(int, int, const char*, int)’ defined but not used [-
Wunused-function]
static void locking_function(int mode, int n, const char */*file*/, int
/*line*/)
jsonapi-generator is now capable of generating API for headers outside
retroshare/ directory
jsonapi-generator do a bit of methods parameter sanity check
JsonApiServer is now integrated in the rsinit hell like other services
Add *::exportGPGKeyPairToString to a bunch of classes in cascade
RsControl is now capable of calling back a function when retroshare is almost
completely stopped, this is useful when running retroshare toghether with
externally managed runloop such as QCoreApplication
Expose a bunch of methods through JSON API
retroshare-nogui remove some dead code and fix stopping from the RetroShare API
Thanks sehraf for reporting
retroshare://forum?name=fucking%20genius&id=8fd22bd8f99754461e7ba1ca8a727995&msgid=503d75bf7ed7fa7568eeae4db5c8d31a7e124c98
/libretroshare/src/rsitems/rsitem.h:92: warning:
Cppcheck(duplInheritedMember): The class 'RsPeerNetItem' defines member
variable with name 'peerId' also defined in its parent struct 'RsItem'.
/libretroshare/src/rsitems/rsitem.h:92: warning:
Cppcheck(duplInheritedMember): The class 'RsHistoryMsgItem' defines
member variable with name 'peerId' also defined in its parent struct
'RsItem'.
/libretroshare/src/rsitems/rsitem.h:91: warning:
Cppcheck(duplInheritedMember): The class 'RsBanListConfigItem' defines
member variable with name 'type' also defined in its parent struct
'RsItem'.
/libretroshare/src/rsitems/rsitem.h:92: warning:
Cppcheck(duplInheritedMember): The class 'RsBanListConfigItem' defines
member variable with name 'peerId' also defined in its parent struct
'RsItem'.
In case of hidden node the listen address was not properly converted to
ipv4 mapped format causing bind to fail
Use sockaddr_storage_copy instead of = as sockaddr_storage is not
guaranted to be copyable
Due to a regression introduced in
dedfcb2b60 the local address was not
updated correctly causing part of RS networking being stuck and printing
lot of invalid sockaddr_storage messages, this commit fix the regression
With this commit IPv6-v3 surpass v0.6-IPv6-2 in term of features
obsoleting it.
p3BitDht handle gracefully unwanted non IPv4 addresses
rsUdpStack handle gracefully unwanted non IPv4 addresses
pqissludp handle gracefully unwanted non IPv4 addresses
Move single address limitation workaround from
p3discovery2::sendOwnContactInfo to better
place p3PeerMgrIMPL::UpdateOwnAddress this way local address list is
queried less often and only id there is some suggestion that it may
have changed (probably ir will not be called all the times there is a
changes in local network interfaces but is good enough)
Implement crossplatform rs_setsockopt to avoid too much ifdef around
Implement sockaddr_storage_copy to safely copy sockaddr_storage objects
Changed unix_connect signature to be more comfortable for dual stack
usage
Remove dead code in pqissl::pqissl(...)
Adapt p3I2pBob::connectI2P() to new unix_connect
Adapt extaddrfinder to new unix_connect
Add sockaddr_storage_ipv4_to_ipv6 to convert from flat IPv4 to IPv4
mapped as IPv6
Workaround RS single local address flawed assumption by spreading
all viables local addrresses via discovery
Spread addresses also through hidden node as they are the only hope
to help direct connection happening for common trusted nodes
behind nasty firewalls
This should solve APIPA address being always selected as preferred local
address on Windows which was causing problems connecting to machines on
the same local network.
Now the link local address is used as fallback only if there is non link
local private address available.
/libretroshare/src/retroshare/rsservicecontrol.h:46: warning:
Cppcheck(passedByValue): Function parameter 'service_name' should be
passed by reference.
/libretroshare/src/pqi/pqiqos.h:62: warning: Cppcheck(uninitMemberVar):
Member variable 'ItemQueue::_threshold' is not initialized in the
constructor.
/libretroshare/src/pqi/pqiqos.h:62: warning: Cppcheck(uninitMemberVar):
Member variable 'ItemQueue::_counter' is not initialized in the
constructor.
/libretroshare/src/pqi/pqiqos.h:62: warning: Cppcheck(uninitMemberVar):
Member variable 'ItemQueue::_inc' is not initialized in the constructor.
/libretroshare/src/pqi/pqiindic.h:39: warning:
Cppcheck(noExplicitConstructor): Class 'Indicator' has a constructor
with 1 argument that is not explicit.
/libretroshare/src/pqi/pqi_base.h:195: warning:
Cppcheck(noExplicitConstructor): Class 'PQInterface' has a constructor
with 1 argument that is not explicit.
/libretroshare/src/pqi/p3servicecontrol.cc:840: warning:
Cppcheck(unreadVariable): Variable 'changes' is assigned a value that is
never used.
/libretroshare/src/pqi/p3servicecontrol.cc:941: warning:
Cppcheck(unusedVariable): Unused variable: mit
/libretroshare/src/pqi/p3servicecontrol.cc:972: warning:
Cppcheck(unusedVariable): Unused variable: mit
/libretroshare/src/pqi/p3servicecontrol.cc:88: warning:
Cppcheck(uninitMemberVar): Member variable
'p3ServiceControl::mServiceServer' is not initialized in the
constructor.
/libretroshare/src/pqi/p3servicecontrol.h:69: warning:
Cppcheck(noExplicitConstructor): Class 'p3ServiceControl' has a
constructor with 1 argument that is not explicit.
/libretroshare/src/pqi/p3servicecontrol.cc:45: warning:
Cppcheck(noExplicitConstructor): Class 'RsServiceControlItem' has a
constructor with 1 argument that is not explicit.
/libretroshare/src/pqi/p3servicecontrol.cc:52: warning:
Cppcheck(noExplicitConstructor): Class 'RsServicePermissionItem' has a
constructor with 1 argument that is not explicit.
/libretroshare/src/pqi/p3servicecontrol.cc:359: warning:
Cppcheck(passedByValue): Function parameter 'serviceName' should be
passed by reference.
/libretroshare/src/pqi/p3netmgr.cc:926: warning:
Cppcheck(unreadVariable): Variable 'title' is assigned a value that is
never used.
/libretroshare/src/pqi/p3netmgr.cc:1808: warning:
Cppcheck(unreadVariable): Variable 'connectstr' is assigned a value that
is never used.
/libretroshare/src/pqi/p3historymgr.cc:353: warning:
Cppcheck(invalidScanfArgType_int): %d in format string (no. 1) requires
'int *' but the argument type is 'unsigned int *'.
/libretroshare/src/pqi/p3cfgmgr.h:154: warning:
Cppcheck(noExplicitConstructor): Class 'p3ConfigMgr' has a constructor
with 1 argument that is not explicit.
/libretroshare/src/pqi/authssl.cc:857: warning:
Cppcheck(redundantAssignment): Variable 'buf_in' is reassigned a value
before the old one has been used.
/libretroshare/src/pqi/authssl.cc:864: warning:
Cppcheck(redundantAssignment): Variable 'buf_hashout' is reassigned a
value before the old one has been used.
/libretroshare/src/pqi/authssl.cc:867: warning:
Cppcheck(redundantAssignment): Variable 'buf_sigout' is reassigned a
value before the old one has been used.
/libretroshare/src/pqi/authssl.cc:1006: warning:
Cppcheck(redundantAssignment): Variable 'buf_in' is reassigned a value
before the old one has been used.
/libretroshare/src/pqi/authssl.cc:1013: warning:
Cppcheck(redundantAssignment): Variable 'buf_hashout' is reassigned a
value before the old one has been used.
/libretroshare/src/pqi/authssl.cc:1016: warning:
Cppcheck(redundantAssignment): Variable 'buf_sigout' is reassigned a
value before the old one has been used.
/libretroshare/src/pqi/authssl.cc:1451: warning:
Cppcheck(redundantAssignment): Variable 'ek' is reassigned a value
before the old one has been used.
/libretroshare/src/pqi/authssl.cc:366: warning:
Cppcheck(unreadVariable): Variable 'dh_prime_2048_hex' is assigned a
value that is never used.
/libretroshare/src/pqi/authssl.cc:1508: warning:
Cppcheck(unreadVariable): Variable 'in_offset' is assigned a value that
is never used.
/libretroshare/src/pqi/authssl.cc:249: warning:
Cppcheck(useInitializationList): Variable 'name' is assigned in
constructor body. Consider performing initialization in initialization
list.
/libretroshare/src/pqi/authgpg.cc:124: warning:
Cppcheck(uninitMemberVar): Member variable 'AuthGPG::mStoreKeyTime' is
not initialized in the constructor.
/libretroshare/src/pqi/authgpg.h:58: warning:
Cppcheck(noExplicitConstructor): Class 'AuthGPGOperation' has a
constructor with 1 argument that is not explicit.
/libretroshare/src/pqi/pqissl.cc:449: warning: this statement may fall
through [-Wimplicit-fallthrough=]
sslmode = PQISSL_ACTIVE; /* we're starting this one */
/libretroshare/src/pqi/pqissl.cc:456: here
case WAITING_DELAY:
/libretroshare/src/pqi/pqisslpersongrp.cc:125: warning: this statement
may fall through [-Wimplicit-fallthrough=]
std::cerr << " --> falling back to Tor" << std::endl;
/libretroshare/src/pqi/pqisslpersongrp.cc:126: here
case RS_HIDDEN_TYPE_TOR:
/libretroshare/src/pqi/p3peermgr.cc:2619: warning: variable ‘peerIt1’
set but not used [-Wunused-but-set-variable]
std::set<RsPgpId>::iterator peerIt1 =
groupItem.peerIds.find(*peerIt);
pqi/authssl.cc: In member function 'virtual X509*
AuthSSLimpl::SignX509ReqWithGPG(X509_REQ*, long int)':
pqi/authssl.cc:929:3: error: jump to label 'err' [-fpermissive]
err:
^
pqi/authssl.cc:872:22: error: from here [-fpermissive]
goto err;
^
pqi/authssl.cc:877:24: error: crosses initialization of 'unsigned
char* p'
unsigned char *p=buf_in;
^
pqi/authssl.cc: In member function 'virtual bool
AuthSSLimpl::AuthX509WithGPG(X509*, uint32_t&)':
pqi/authssl.cc:1091:1: error: jump to label 'err' [-fpermissive]
err:
^
pqi/authssl.cc:1027:8: error: from here [-fpermissive]
goto err;
^
pqi/authssl.cc:1035:17: error: crosses initialization of 'unsigned
char* p'
unsigned char *p=buf_in;
^
/libretroshare/src/pqi/pqiservice.h:80: warning: unused parameter
‘names’ [-Wunused-parameter]
virtual void getItemNames(std::map<uint8_t,std::string>& names)
const {} // This does nothing by default. Service should derive it in
order to give info for the UI
^~~~~
warning: private field 'lastGroupId' is not used [-Wunused-private-
field]
uint32_t lastGroupId;
warning: private field 'waittimes' is not used [-Wunused-private-field]
int waittimes;
warning: private field 'listen_checktime' is not used [-Wunused-private-
field]
long listen_checktime;
RsTemporaryMemory was complaining of being initialized with size 0 in
case of empty list was passed to the method, this is a legitimate use
case when one want have an empty list as state, so in this case pass 1
as argument to RsTemporaryMemory constructor