Commit Graph

68 Commits

Author SHA1 Message Date
jolavillette
7c2efbc630 reduce cpu load by increasing sleep before ticking pqi and core 2020-05-09 20:35:20 +02:00
jolavillette
7db8cbca97 remove debug flag 2020-05-02 21:21:42 +02:00
Olivier Marty
b0613ef653 Correct design flaw in slow process control, improve indentation, set up debug #ifdef 2020-04-28 09:48:12 +02:00
Olivier Marty
9a9eb56a3a clean rewrite of RsServer::threadTick 2020-04-27 16:08:20 +02:00
Gioacchino Mazzurco
df87fe53b1
Cleanup RsThread and related classes
Removed antipattern abstraction RsSingleJobThread
Rename runloop() method to run() in RsThread
Ported few classes ineriting from RsSingleJobThread to RsThread
RsThread use std::atomic instead of self implemented strange binary semaphores
Removed RsTickingThread::shutdown() use RsThread::askForStop() instead
Removed RsTickingThread::fullstop() use RsThread::fullstop() instead
Stop properly JSON API server in retroshare-gui
Centralize errno traslation to literal in util/rserrno.*
2019-12-30 10:38:54 +01:00
Gioacchino Mazzurco
9b8d0afacb
Fix sporadic crash in JSON API async calls
In Restbed one is not supposed to call session->yield outside the
  threads controlled by Restbed. RetroShare JSON API async call were
  calling session->yield from threads controlled by RetroShare all the
  times, this caused crashes in some cases, like when the JSON API
  socket timed out concurrently with the session->yield call .
  To solve this problem session->yield from async
  calls are now wrapped insto mService->schedule to ensure they are
  executed on the right thread (aka one of the threads controlled by
  Restbed).
While solving this issue I realized also that passing RsEvents as const
  references around was quite limiting in cases where the event need to
  be finally handled in another thread, in that case passing by const
  reference the RsEvent needed to be copied by value into the thread
  that process it, in this copy by value process the information of
  which was the original specific type is lost, and then only the data
  and methods from general RsEvents are available, unless the handler
  does tricky stuff with type coercion etc. To solve this limitation
  pass the events as std::shared_ptr<const RsEvent> seems the safer and
  more elegant solution.
2019-08-27 11:59:38 +02:00
Gioacchino Mazzurco
7dab487bde
Implement a JSON API friendly notification system
This should bit by bit substitute RsNotify which would be very difficult
  to support properly in JSON API.
The new system is much simpler to use also from the C++ side of the
  moon.
BroadcastDiscovery take advantage of the new system to notify about new
  non friend peer discovered, tested successfully also in JSON API.
2019-04-15 00:31:49 +02:00
csoler
630609c11c
fixed retroshare.project email in licenses 2018-11-11 20:42:48 +01:00
csoler
9c3d5acd8e
fixed license in libretroshare 2018-11-11 14:24:48 +01:00
Gioacchino Mazzurco
329050a9c2
Use safer rstime_t instead of time_t
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.
2018-10-07 13:07:06 +02:00
Gioacchino Mazzurco
bf98166197
RsServer fix crash on stop if shutdown callback not set 2018-09-21 01:39:48 +02:00
Gioacchino Mazzurco
eb77f921ec
Implement JSON API HTTP Basic authentication
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
2018-09-19 21:28:26 +02:00
Gioacchino Mazzurco
a8ddec03fc
Expose more login related JSON API
/rsLoginHelper/isLoggedIn to check if already logged in
/rsAccounts/getCurrentAccountId to get the id of current selected
  account, beware that an account may be selected without actually logging in
2018-08-30 19:09:50 +02:00
csoler
d0039241d3 replaced usleep() by rstime::rs_usleep() which accepts times >= 1 sec. Should fix problems on windows 2018-01-27 20:22:31 +01:00
Gioacchino Mazzurco
da459c884e Renamed GxsMails to GxsTrans
GxsTrans is a generic transport service, use more generic name trans
 instead of mail to avoid confusion
Renamed size(...) to seria_size(...) for costistence whit the codebase
Moved GxsTrans and related things to gxstrans directory
Removed outdated and now uncompatible gxsmail test service
Avoid expose internal items in public interface methods
2017-03-02 02:37:53 +01:00
Gioacchino Mazzurco
379fb97062 p3GxsMails queues persistents accross RS sessions
RsServer properly handle deletion (childs are not yet)
p3GxsMails properly handle deletion
RsControl::instance() use proper static initialization
p3GxsMails register configuration files at right time
RsGxsMailBaseItem take in account offset in header pointer
RsGxsMailSerializer use C++11 safe enum class for items types
RsGxsMailItem take in account offset in header pointer
RsGxsMailItem::deserialize(...) properly calculate final offset
p3GxsMails::handleResponse(...) delete group items after usage
move ex inner struct OutgoingRecord to gxs mail items header
p3MsgService::saveList removed unused variable
p3MsgService::notifyDataStatus(...) take in account multiple backends
p3MsgService::receiveGxsMail(...) take in account multiple backends
p3MsgService::receiveGRouterData(...) take in account multiple backends
Added prersistence to p3MsgService::gxsOngoingMessages
2017-02-26 00:46:02 +01:00
csoler
6d2bfcf04e restored average kicking rate to a more reasonnable value. To be tested (for too much CPU use). Dynamically changing this value is probably needed for VOIP 2016-04-29 18:52:58 -04:00
csoler
654e0fc1d8 added missing call to SSL_pending, which caused decrypted data to wait in the SSL buffer when the bio is not receiving anything more 2016-04-29 17:53:21 -04:00
csoler
a4430647de various changes to measure RTTs more accurately 2016-04-26 23:42:44 -04:00
zeners
aca88308ea compatible to g++11 / QT5
method suggested by cyril
2016-03-29 21:22:14 +02:00
electron128
55ea8a54f8 init pointer in RsServer 2016-01-01 11:49:03 +01:00
thunder2
c76141ed65 Added missing initialization in
- pqissl
- pqissludp
- PeerConnectStateBox
- RsTlvBanListEntry
- RsServer
- TcpStream
- PGPCertificateInfo
- peerConnectAddress
- AudioInputConfig
- SpeexInputProcessor
- xProgressBar
- TBoard

Removed unused member:
- xProgressBar


git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8611 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-07-13 11:03:18 +00:00
csoler
6c7d86d659 improved GUI layout. changed filtering strategy: now all is collected but only a subset is banned, according to user input. Default is to only ban IP ranges auto-generated and home-made ranges.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8375 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-06-04 20:26:57 +00:00
csoler
9ef5557146 fixed uninitialised memory read
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8322 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-05-30 21:18:10 +00:00
csoler
e9b9dce9f5 created 2 subclasses of RsThread, one for ticking services, and one for single shot jobs. Now all threads use the same base code.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8288 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-05-22 20:54:38 +00:00
csoler
c8b3d4e527 improved RsServer so that join() is called on every running thread at shutdown, hence avoiding SIGSEGV. Removed some unused members of RsServer
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7776 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-12-21 20:52:34 +00:00
drbob
c0738eec7f Merging branches/v0.6-initdev into trunk.
These split at 6672 -> 7075, so quite a bit merge.
libretroshare compiles - but untested.
retroshare-gui needs GenCertDialog.ui and IdEditDialog.ui to be properly merged. (compile errors).
some plugins will be broken.
retroshare-nogui is untested.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7078 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-02-01 14:16:15 +00:00
csoler
630824aa1b Updated the notification system. Main changes are:
- the notification system is now a service, p3Notify, that is a public RsNotify.
- RsNotify does nothing except providing a registration system for new notify clients.
- Clients should derive a notify client from the NotifyClient class and register it to rsNotify
- all registered clients get all notifications, so only derive the needed methods. This should allow 
  plugins to get notifications as well.
- updated the code to call RsServer::notify()->[notification method] from inside libretroshare
- pqiNotify has been removed.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6996 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-01-07 22:51:22 +00:00
csoler
8e7fe9f79b made file transfer a service. Removed all the old FT code from pqiHandler, and got rid of deprecated CRC32 computation/exchange methods
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-initdev@6782 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-10-01 08:11:15 +00:00
drbob
90aa57a0f0 Rewrite of the discovery system to be more private, with less traffic.
Split the visState into seperate vs_disc and vs_dht for easier handling.
Split the heartbeat system into a separate service.
Added IPv4 and IPv6 local/ext addresses into discovery & peer config.
Fixed up samenet and samesubnet ipv4 calls.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-initdev@6773 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-09-28 08:09:59 +00:00
drbob
a6cf738371 Removing old services, serialisers and other references for:
- forums
	- channels
	- tunnel
	- blog
	- gamelauncher.
	- distrib.

Note this majorly breaks the GUI, for the moment.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-initdev@6683 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-09-03 14:51:23 +00:00
drbob
f93ed1fb6e - Removed RsIface, and moved configuration options to RsServerConfig (rsconfig.h)
- Fixed cipher list to "HIGH:!DSS:!aNULL:!3DES", which should disable the weak ones, no idea how to force it to PFS (which it should use).
 - fixed void * pointer maths.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6584 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-08-21 21:36:33 +00:00
drbob
7b8bb8dff7 Cleaned up GXS compilation. now single config option (gxs) in .pro file.
Removed GXS headers from p3face.h and used class declarations.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5991 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-16 15:04:52 +00:00
chrisparker126
3eaf844ec8 Reworked ranking process flow
added ranking retrieval in gui 
removed locks from TokenQueue
refactored gxs p3 pointers in p3face header file 
and gxs services now shutdown correctly using join(led to bad segfaults on shutdown)

git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5972 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-11 22:26:11 +00:00
thunder2
09b5d7a8c6 Added the first version of the FeedReader plugin.
Added a new method to RsPlugInInterfaces to stop the plugins at shutdown of RetroShare.


git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5372 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-02 13:17:53 +00:00
thunder2
470951d664 Removed some std::ostringstream.
To be continued.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5104 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-04-15 14:37:44 +00:00
thunder2
3b85873313 Added patch from AC
- add missing includes "unistd.h" for compiling with gcc 4.7.0.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5096 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-04-12 23:29:39 +00:00
chrisparker126
c1af9b13ad fix for windows plugin system
uses call back to expose the retroshare interface to plugins



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4633 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-10-08 17:47:36 +00:00
drbob
c5c088096f Added Check of Time for main Core Cycle.
* WARNING is printed out & LOGGED if it takes more than 0.2 Seconds to complete.
	-> This happens occasionally, need to watch it. 
	-> This is one of the things that kills connections.
	-> Ideally want to get the cycle down to 0.05 seconds.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4544 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-08-07 22:00:56 +00:00
drbob
f6f721a492 Removed p3ConnectMgr. Replaced it with p3LinkMgr, p3NetMgr and p3PeerMgr.
Updated references in other classes.
 * Most classes need p3LinkMgr, and only use two functions: OwnId() and getOnlineList()




git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-netupgrade@4416 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-07-09 18:39:34 +00:00
thunder2
de87a89437 Added a name to the RsMutex class.
You can enable the debugging of the waiting time for a lock of RsMutex in rsthreads.h with
#define RSMUTEX_DEBUG 300
That means all locks waiting longer than 300ms are logged into the stderr.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4392 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-07-04 22:59:39 +00:00
csoler
a2c91a7924 - Added basic infrastructure to plugin system in libretroshare and retroshare-gui.
- ported LinksCloud to a new plugin, and removed it from main sources

Next moves:
- add gui for managing plugins
- handle windows compilation



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4275 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-06-16 21:59:26 +00:00
thunder2
f9c896c3ac Fixed crash on shutdown of RetroShare, when the cache loading is running.
Now the p3distrib threads are stopped before the instance of AuthGPG is deleted.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4119 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-04-03 16:20:47 +00:00
thunder2
0a42b7899e The working (hashing) thread FileIndexMonitor is now stopped when RetroShare is closed.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4072 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-03-03 23:30:08 +00:00
thunder2
8832f7dfc5 Introduced a minimal version of RetroShare.
You can enable it in libretroshare.pro and RetroShare.pro by uncomment
CONFIG += minimal

This enables two new defines for stripping all not needed things
- libretroshare: MINIMAL_LIBRS
- GUI:           MINIMAL_RSGUI

and removes not needed files from build (see end of the files libretroshare.pro and RetroShare.pro).

Beware: All data of the stripped services are lost

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3414 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-08-31 20:00:49 +00:00
drbob
fcdd7ee113 Changes to integrate bitdht into libretroshare.
Mainly re-organising tcponudp... 
	tests->test area
	network->trash (uses libbitdht classes).
	new udp interfaces (udppeer + udpstunner)

Changes include:
	* p3bitdht: added "addReceiver() call, and more debugging. 
	* p3bitdht: added DO_IDLE flag so searches are continous.
	* p3bitdht/pqiassist: matched up Assist interface.
	* fixed pqiNetListener interface.
	* rsinit/p3connmgr: setup udp init
	* tcpstream: switched to new udp receiver.
	* added "blogs" switch in libretroshare.pro (was stopping compiling ;)
	* added "bitdht" switch in libretroshare.pro 



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3323 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-07-31 18:14:10 +00:00
thunder2
334c9b61d3 moved rsGlobalShutDown from MainWindow::doQuit to main
rsGlobalShutDown now cleans the threads and some memory on exit

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3028 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-05-29 15:14:25 +00:00
chrisparker126
7652e831e8 removed unused files qblog
- redundant 



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2868 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-05-08 17:00:41 +00:00
joss17
9976b80566 remove the ssl cert storage. Big rewrite of ssl cert and friend management
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2017 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-01-13 21:22:52 +00:00
joss17
a0a64fb588 make it compile
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2002 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-01-13 20:58:58 +00:00