Commit Graph

51 Commits

Author SHA1 Message Date
drbob
648e15bcf7 Found cause of OSX network resets / lost connections: inet_ntoa is not thread-safe.
* Added thread-safe rs_inet_ntoa function (util/rsnet.cc)
 * Switched all calls to this function (most of the changes)
 * Modified getLocalInterfaces() and getPreferredInterface() to avoid string conversions.
   - NB: Modified windows functions too, but unable to test (hope it compiles!)

Also:
 * Added  EVP_CIPHER_CTX_rand_key() replacement function for old versions of SSL (pre 0.9.8)  (for OSX 10.5)
   - NB: This code should be reworked to remove these calls anyway.
 * Updated tests/pqi to handle above changes.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3281 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-07-10 20:34:03 +00:00
csoler
0d14351b8a Ported branch commits:
3099: libretroshare/src/tcponudp/udplayer.cc 
      libretroshare/src/tcponudp/udplayer.h 	
      libretroshare/src/util/rsnet.cc 	
      libretroshare/src/util/rsnet.h

	moved operator<<(ostream&,sockaddr_in) to rsnet.h, as it is used at
	different places

3100: libretroshare/src/util/rsdiscspace.cc
	suppressed debug mode

3101: libretroshare/src/serialiser/rsdiscitems.cc

	put correct (i.e. non conservative) size for RsDiscReply packets

3102: libretroshare/src/services/p3disc.cc

	Made a pass on the code in p3disc. Corrected some bugs:
		- suppressed an unwanted return in packet treatment
		- prevented sending info to a peer about itself
		- changed askInfoToAllPeers() such as not to discard info
		  from peers with NODISC flag (because we especially need
		  info for these)
		- enabled receiving p3disc info even if p3discovery is
		  disabled. Indeed, disabeling p3disc is a measure of
		  protection, so it should limit the export of p3disc info,
		  not the import.
		- removed test discarding info about dummy friends, because
		  it is useless
		- don't discard info about peers that have the NODISC flag
		  (meaning that we especially need info for them)
		- added safety check about received GPG keys. Before we
		  relied on this test being performed by
		  p3ConnMgr::addFriend()
		- added some debug info

3103: libretroshare/src/ft/ftcontroller.cc
	removed debug info



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3104 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-06-10 13:42:49 +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
csoler
757aa7a95d Ported branch commits 2980/1: cleaned the code in IP address lists management. Removed some bugs. Changed the strategy a bit: only keep the most recent port for identical ips. Changed the interface of extAddrFinder to make it mroe secure.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2983 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-05-23 22:27:10 +00:00
leander-256
b30056e17f This patch allows Windows users to share files and folders with "exotic" characters.
The problem was that libretroshare handles files in UTF-8 but Windows's ANSI/POSIX C functions automatically assume that the char* parameters are encoded with the system's code page. There is no way to set that code page as UTF-8. So now under Windows the code translates the file name to UTF-16 before feeding it to one of the Unicode functions (they are usually prefixed or suffixed by 'w'). Please note that it is not very efficient.

Furthermore, Windows does not provide a Unicode version of opendir/readdir/closedir, so it was necessary to use FindFirstFileW/FindNextFileW/FindClose which has a different behaviour as well as different structures. The FolderIterator class was created in order to mimic the Unix way of traversing folders contents. Hence the algorithm is unchanged and the systems differences masked.

As it was necessary to use some functions from the Windows API, <windows.h> had to be included in a few files were it didn't appear before, creating macros and #define conflicts. In order to solve them, util/rswin.h must be included first in a file (if necessary). Otherwise the preprocessor will fail on purpose to avoid the code being compiled with different _WIN32_WINNT values.

As another side-effect, rstlvutil.h and rstlvutil.cc have been removed from libretroshare.pro file. They are only used by testing units and include util/utest.h which defines a macro FAILED that already exists in <windows.h>. I don't know if unit tests are still in use and I don't plan on coding often on Windows, so I'll leave that as an exercise (hot potato?) to a motivated fellow Windows programmer.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2924 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-05-16 23:26:45 +00:00
leander-256
e49cc6552c Minor fixes
pqi/authgpg.cc:
- remove French comment (with nasty non-unicode characters)
- use std::cerr instead of fprintf

tcponudp/extaddrfinder.cc:
- initialize correctly the sockaddr_in, former code wouldn't pad sin_zero
  (which is required by the standard)


git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2909 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-05-14 18:50:20 +00:00
thunder2
465cd42463 Memory leak:
- getLocalInterfaces -> iptable = (MIB_IPADDRTABLE *) malloc(dwSize);
- main -> RshareSettings  *_settings = new RshareSettings();

ExtAddrFinder::~ExtAddrFinder - use free for pointer allocated with malloc


git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2882 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-05-09 21:58:28 +00:00
csoler
7b183f41a1 suppressed deadlock (mutex explicitely locked before thread exit)
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2466 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-03-01 20:35:32 +00:00
joss17
be5957742c remove some exit(1)
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2425 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-02-25 22:43:04 +00:00
csoler
0d67e991e3 suppressed possible un-necessary infinite wait
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2405 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-02-23 21:54:35 +00:00
joss17
b46cf457db further log cleanings
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2271 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-02-10 10:56:54 +00:00
joss17
bf67301d71 remove a maximum of debug outputs for the release
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2232 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-02-07 21:28:40 +00:00
csoler
b592bdac62 added return statements is functions that missed one
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2137 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-01-27 08:24:39 +00:00
joss17
f481dbef59 add include for latest gcc. Comment usleep fonction in tou_net.h
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2101 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2010-01-20 22:02:43 +00:00
csoler
ad96c86f68 Added dynamic local and external ip reconfiguration. I still need to reset connexions when changing ips.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1796 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-11-06 22:12:58 +00:00
joss17
cabf6260c2 fix uninitialized pointer fir libupnp
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1782 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-10-30 00:45:25 +00:00
joss17
62111d00ca change timer and fix log messages
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1780 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-10-30 00:44:44 +00:00
joss17
4295eee208 change timers
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1779 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-10-30 00:44:24 +00:00
joss17
95888fed59 add a timeout to ext addr finder
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1778 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-10-30 00:44:04 +00:00
joss17
2e5130a1da rewrite connection manager
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1769 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-10-30 00:41:24 +00:00
drbob
6e5d2f43d8 This is a little experimental modification to the TCP/UDP listening ports.
* Modified bind calls to attach to 0.0.0.0:XXXX instead of specific
    IP:Port combinations. This will help connectivity when RS chooses
    the wrong interface.
  * These changes are within #defines so they can be easily reverted.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1498 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-08-06 10:46:37 +00:00
drbob
2bf94b909a Reworking of networking code to enable Net Restart.
* Stun code now runs continually - to check external network state.
  * Udpsorter controls DHT stun is on/off. (via p3ConnectMgr)
  * added code to enable threads to join/restart 
  * enabled NetRestart for UDP and TCP.
  * tweaked networking code for faster startup (now ~30 seconds - can still be improved).
  * tweaked debug messages for testing networking
  * Added test for checking external IP address determination.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1492 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-08-04 23:22:44 +00:00
drbob
a023a0bfcd Major change to the way certificates are stored now defaults to ~/.retroshare/SSLID/
* supports Multiple Accounts on same computer.
	* Enabled libretroshare tests using Makefiles.
	* restructured RsInit functions: Config Data is now private.
	* switch OpenPGP on by default (added #define to rsinit).
	


git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1451 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-07-30 21:27:47 +00:00
joss17
7b4c7384b5 Merge branch 'gcc44'
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1279 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-05-27 20:59:48 +00:00
drbob
5466c447ae Added missing files (extaddrfinder & p3turtle) to Makefiles.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1139 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-04-21 19:12:43 +00:00
csoler
1aaf6f5c27 Corrected potential mutex lock problem
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1130 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-04-16 19:36:58 +00:00
csoler
4bb497a905 Cleaned the gui a little bit:
- added a checkbox to control the use of external servers for ip determination.
- put back Network on the left
- put channels out of RS_RELEASE_VERSION, as it's not working yet.
- NetworkDialog:
	- set the info in columns about trust to be more explicit
	- changed dark green into light green to comply with colors in the trust matrix (it's also more readable in light green)
	- corrected trust strings that appeared in the Last Contact column
- changed "generate certificate" in connect friends wizard into "export my certificate..." which is more appropriate



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1113 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-04-05 13:04:18 +00:00
csoler
304bd556e0 added server-based ip determination as a fallback to existing methods. Forced Dht publishing as soon as an external ip is known
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1110 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-04-03 09:21:58 +00:00
csoler
e23bd13bc9 added server-based ip determination as a fallback to existing methods. Forced Dht publishing as soon as an external ip is known
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1109 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-04-03 09:21:20 +00:00
defnax
209bb758e2 added #include <stdint.h> which is needed when compiling with MinGW/cgywin under Windows.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1024 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-02-08 21:07:11 +00:00
notdefine
e97d661624 Fixed error: ‘UINT_MAX’ was not declared in this scope
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@930 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2009-01-17 21:01:05 +00:00
drbob
f7fca4295b Improvements/bugfixes to File Transfer.
* Lots more debugging messages.
 * Fixed Sleep / sleep issue on windows.
 * added pthread / WSAStartup.
 * added ownId to ftDataMultiplex for loopback file transfer.
 * now start ftDataMultiplex thread.
 * several bugfixes in ftfilecreator



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@710 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-08-30 01:07:24 +00:00
drbob
d36b15d526 Major cleanup of Retroshare Logging - aimed at enabling proper UDP testing.
* Switched off most of std::cerr output. (expect UPnP)
 * moved pqi/pqidebug to util/rsdebug to allow greater usage.
 * added Mutexes to logging.
 * Downgraded many log messages to DEBUG.
 * New Log messages for connections, dht and udp code.
 * Added check for bad UDP socket.
 * Added check for non-firewalled scenario.
 * Increased Storage period from 1 Month to 6 Months for Links & Blog.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@644 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-07-10 16:29:18 +00:00
drbob
ca69e3d5e3 Removed most of the output to stderr.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@641 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-07-09 09:55:09 +00:00
drbob
fe284b628a * Added rstlvimage.cc to serialiser (missed in other checkin).
* Added Forum ID to configuration Manager.
 * added proper startup for p3Forums.
 * updated forums/distrib interfaces.
 * Switch Auto-Login on by default.
 * switched out lots of debugging.
 * add RM libretroshare.a to top-level Makefile.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@594 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-06-13 15:42:08 +00:00
drbob
9fbf95bf5d Added Filter to Stun Results to ensure that we only get external addresses.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@583 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-06-07 11:22:01 +00:00
drbob
aa906da74a Added #includes for picky compiler (ArchLinux) mainly: stdlib.h & string.h
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@568 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-05-31 13:31:11 +00:00
drbob
7044822e1f Addition of several utility functions:
(1) xpgp_id to extract the name/id from a certificate.
(2) dht_bootstrap to check the status of the bootstrap peers.

Various bits of code needed to be rearranged to make these utilities possible.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@394 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-03-21 02:02:58 +00:00
drbob
0bdc3522a6 Improved the bootstrap Stun system.
* searching for STUN ID's continues until RS_STUN_FOUND_MIN are found (10).
 * abandon STUN search if Ext or Upnp mode.
 * add Bootstrap IDs to rear of mStunList. (bugfix)

Force saving of certificates after "oldFormat" loading.
Corrected printStunList() fn call.

Added a notification system: 
 (1) libretroshare System Notifications.
 	- System notification if Firewall Status is bad.
 (2) PopUp messages.
 	- Popup for a connected peer.
 	- Popup for a new message.
 * New interface (to be revised).



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@376 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-03-05 16:32:18 +00:00
drbob
9bdd44d0f5 Changes required to get Retroshare V0.4 working under windows.
Most of these changes relate to:
 (1) rand() is different 
 (2) sleep() don't exist on Windows.
 (3) networking headers are different - these need to be cleaned up in general.
 (4) disabled tests that won't compile on Windows.

Will probably have to rollback some of these changes for Unix later.





git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@372 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-03-03 14:41:15 +00:00
drbob
85aa75ef5d A series of small bugfixes - as we head towards the first v0.4 release.
* Added stun bootstrap functionality.
 * Added in two temporary StunServers.
 * Reconnect attempts are TCP only.
 * enabled AUTOCONNECT and TCP Connections.
 * reduced UDP keepAlive timer to 15 secs.
 * made UPnP the default startup behaviour.
 * Removed StunId raw printouts -> now use BinToHex()
 * Unified TTLS and PERIODS in p3dhtmgr.h
 * DHT bugfix (data not passed to ConnMgr).




git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@370 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-03-03 14:01:52 +00:00
drbob
63828f77a8 Significant improvements to DHT behaviour, and reconnection attempts.
* Added GUI interface for auto connect state.
 * Added HTTP retrieval and storage of DHT peers update.
 * Added code for partial recv() from DHT peers.
 * Disabled Chat/Disc/Udplayer/tcpstream debug output.
 * Added Unreachable Check to connMgr.
 * Added auto reconnect functions to connMgr (#define to disable).
 * Restructured DHT notify code... much cleaner.
 * DHT now flags out of date DHT results.
 * DHT notifies ConnMgr on any results (same or diff).
 * Added Fns to cleanup old udp connection.
 * other bugfixes.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@369 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-03-02 14:25:59 +00:00
drbob
2dc2954f40 Added Code to detect Symmetric NAT (BAD!) Firewalls.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@361 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-02-28 15:58:54 +00:00
drbob
6dd3d30d8e Additions to tcponudp to add a TouKeepAlive system.
This is only used if we are in 'firewalled' mode.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@360 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-02-28 10:43:33 +00:00
drbob
8b230a55cf Significant changes to aid UDP connections.
* Added Period and Delay parameters to connections.
   - Delay is used to avoid simultaneous TCP connections.
   - Period is used to regulate UDP connections.
 * added Delay code to pqissl.
 * added Period code to tcponudp / pqissludp.
 * modified TTL modification code.
 * increased SynPktRetransmit value.
 * fixed retrans() timeout (one reason code wasn't working before!)
 * fixed tou_close() SEGV bug.
 * modified pqissludp tou_socket creation. (non permanent now).
 * Modified format of peerConnectRequest() CB to make it more useful and rewrote function.
 * Enabled pqissludp NetInterface.
 * using Id comparision to determine Active/Passive UDP connection state.
 * added #def to disable TCP connections. (for testing)
 * enabled UDP connections from retryConnect() function.
 * corrected EXT check in retryConnect() function.
 * + lots of debug output and other stuff.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@358 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-02-27 02:32:20 +00:00
drbob
98a14ba715 Tweaks to get the UPnP working. Corrected network address passing,
and also adjusted DHT timeout periods.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@345 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-02-11 16:27:55 +00:00
drbob
1bb4283986 Tweaks to debug connections.
* bool / int mismatch bug in tou_extaddr()
* extra debugging to p3connmgr
* fixed connect error in p3connmgr.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@342 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-02-08 17:05:55 +00:00
drbob
54063ab434 switched stun packet byte layout to network-byte-order.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@333 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-02-04 18:24:15 +00:00
drbob
3451af6152 Changes to libretroshare to make the system compile on Mac OSX 10.3
* minor changes to networking headers.
* addition of several virtual destructors (remove warnings)
* switched Makefiles to new system.
* added macosx specific configuration file.
* removed KadC compilation checks.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@324 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-02-03 06:17:33 +00:00
drbob
de0ce110b9 The first commit of the new UDP Connection methods and
the rewrite of the retroshare core networking stack.

This check-in commits the changes to the TCPonUCP code.

This library has been significantly modified to support
multiple UDP "connections" from a single port.
This requires some trickery and a listener thread.
Code to "STUN" peers was also added.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@305 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2008-01-25 06:11:39 +00:00