Coder Social home page Coder Social logo

zapek / xeres Goto Github PK

View Code? Open in Web Editor NEW
59.0 3.0 5.0 16.25 MB

A Peer-to-Peer (Friend-to-Friend), decentralized, encrypted and secure application designed for communication and sharing.

Home Page: https://xeres.io

License: GNU General Public License v3.0

Java 99.14% HTML 0.05% CSS 0.33% Python 0.49%
p2p decentralization retroshare java chat f2f peer-to-peer friend-to-friend distributed decentralized

xeres's People

Contributors

dependabot[bot] avatar transifex-integration[bot] avatar zapek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

xeres's Issues

Investigate possible currency usage

Having an own currency could be useful, but it shouldn't be wasteful and preferably should promote the usage of the application.

Here are some ideas. Proof of work is out of the question.

Add Groovy as a scripting language

Some scriptable events could benefit from using Groovy. For example:

  • receiving a chat message when idle
  • finished downloading a file (to transcode it or move it somewhere)
  • removing peers who didn't connect for a long time

Make sure the location name is handled by discovery

Someone should check if the location name is properly updated by discovery.
If it isn't, handle it.

How to test:

  • add a friend
  • after the connection, his location name should change to something else than "[locationId]".

Add direct friend request

It should be possible to allow friend requests without exchanging Short Invites first. This is possible because:

  1. the PGP id is in the SSL certificate's issuer field
  2. if the PGP key was gathered through discovery, we can show the profile's name and information
  3. don't forget to verify the signature with the PGP key that we have, otherwise don't even show the requester

Add support for nick completion using tab key

When typing , complete by using the first nickname in the list. Pressing tab again uses the next nickname.

Also works when typing S -> Somenick:
Pressing tab again switches to another nickname that starts with 'S' and so on. Then cycles back.

Improve the database backups strategy

Right now a backup is done on each shutdown and it overwrites the previous one.
Find a better strategy.

Should backups be done each X time? For example each hour.
Should backups be performed each X shutdowns? For example each 5 times.
How many previous backups to keep?
Should all of the above be configurable?
Should the software respond to backup tools?
Should the backup be encrypted?

Creating a chat room should join automatically

When creating a local chat room, the client should join automatically. Right now, the other peer can join the chat room but the creating peer cannot join it then. This might be just an UI refresh bug too.

Add support for URLs

Add support for URLs in the chat.

Maybe put some warning if the URL is an outside URL, though this is annoying. Right now Xeres doesn't have built in URLs.

Mark unread messages in the chat rooms

Description

On the left side, a chat room which is not the current chat room should indicate there are new messages in it, for example using a bold font or some icon.

Allow generic sets to be serialized

Currently a Set is considered as EnumSet, but there could be Set or so...

When a set is encountered, we should try to get its type (ParameterizedType has it I think) then use another path if it's not an EnumSet. That way we avoid having to put a special value in the annotation.

On second thought, that only works for deserialize() as it has a Field parameter, serialize() will have to be redesigned somehow (grmbl).

Protocol error when someone pasts images

When someone pasts images from Retroshare (Xeres cannot paste images yet), one gets the following:

io.netty.handler.codec.DecoderException: java.net.ProtocolException: Packet 3651 has too many slices (17)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98) ~[netty-codec-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-codec-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311) ~[netty-codec-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432) ~[netty-codec-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-codec-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:370) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[netty-common-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-transport-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.65.Final.jar:4.1.65.Final]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.65.Final.jar:4.1.65.Final]
    at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]
Caused by: java.net.ProtocolException: Packet 3651 has too many slices (17)
    at io.xeres.app.net.peer.pipeline.ItemDecoder.decodeNewPacket(ItemDecoder.java:85) ~[main/:na]
    at io.xeres.app.net.peer.pipeline.ItemDecoder.decode(ItemDecoder.java:48) ~[main/:na]
    at io.xeres.app.net.peer.pipeline.ItemDecoder.decode(ItemDecoder.java:35) ~[main/:na]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) ~[netty-codec-4.1.65.Final.jar:4.1.65.Final]

ItemDecoder has a MAX_SLICES set to 16 but I don't know if this is some limit I set myself. Investigate a bit and possibly raise it, even though I don't handle images yet.

External IP address is wrong when UPNP fails

What happened?

If UPNP fails, the previous external IP address is displayed.

How to reproduce

  1. Go to a location when UPNP works
  2. Shutdown then go to a location when UPNP doesn't work (off in the router, public NAT, etc...)
  3. Go to the UI/Settings. The previous external IP address is displayed

This happens because the IP is fetched from the database. It should be stored as runtime.
Beware though! Make sure we don't break certificate generation as it's still useful to have a working IP.
Maybe add a "runtime/now" parameter to the controller.

Version

0.5.3

Which OS are you running?

Windows

Relevant log output

No response

Identity image auto update

When a new identity joins a channel, its image is set to blank (because it's not found). there should be a way to try to update it later.

Add created and updated fields for some entities

Some entities (i.e. location or profile) could have a created/updated field for housekeeping purposes.

Spring supports @CreatedDate and @LastModifiedDate. Find out what they could be used for.

Finish implementing the DHT

Currently the DHT works but isn't being used for anything. It has to be able to find peers.

Retroshare doesn't store any IP in the DHT, I think it's something like the hash of LocationId and Profile's PGP id.

Doesn't start on MacOS

What happened?

Reported by AdamH:

Once the DMG is installed, the executable starts with the following error:
"Xeres.app is damaged and can't be opened"

This seems to be because the bundled JRE is signed but not Xeres itself or something. More details available at:
https://bugs.openjdk.java.net/browse/JDK-8276150

Possible solutions:

  • wait for the next JDK (LTS)
  • sign the executable
  • tell users to use 'xattr'

How to reproduce

Install the DMG and run the executable.

Version

0.3.1

Which OS are you running?

MacOS

Relevant log output

No response

Add debug menu

For example a way to trigger a garbage collection manually to check if there are netty leaks.

Investigate code signing

On Windows, and possibly MacOS, there's a code signing warning when running .exe files, in this case, the installer.

Investigate if there are some Open Source friendly signing certificates, like for example:
https://shop.certum.eu/open-source-code-signing-code.html

Discussion:

Tools:

Process:

Note that all of this doesn't remove the Smartscreen filter warning.

Sometimes the scheduler will still run while the app is being shutdown

2020-12-31 19:17:01.411 INFO 8428 --- [lication Thread] io.xeres.app.application.Startup : Shutting down...
2020-12-31 19:17:01.411 INFO 8428 --- [lication Thread] io.xeres.app.net.upnp.UPNPService : Stopping UPNP...
2020-12-31 19:17:01.411 DEBUG 8428 --- [lication Thread] i.x.app.net.peer.bootstrap.PeerServer : Shutting down netty server (fast)...
2020-12-31 19:17:01.415 DEBUG 8428 --- [lication Thread] i.x.app.net.peer.bootstrap.PeerClient : Shutting down netty client (fast)...
2020-12-31 19:17:01.518 DEBUG 8428 --- [ecutorGroup-3-1] i.x.app.net.peer.pipeline.PeerHandler : Closing connection with /11.11.11.11:1234
2020-12-31 19:17:04.507 DEBUG 8428 --- [MessageBroker-2] i.x.app.net.peer.PeerConnectionManager : Attempting to connect to 11.11.11:1234 ...

The last line shouldn't happen.

Investigate usage of GraalVM

GraalVM is an improved JVM with fast startup times and better performances.

What is needed is:

  • current support for all OSes
  • support for Spring Boot
  • support for JavaFX

Oracle still recommends JDK 17. See when they start recommending GraalVM.

Add support for actuator in the UI

Some endpoints the UI could use:
/actuator/health (returns status: UP)
/actuator/info (returns the name, build time and version)

Custom info contributor could also be written to expose some configuration, which will be shown in the UI.

Implement a per service preference system

Right now everything is stored in the database but it requires a model and JPA repositories.
We should add a way for services to define their own things (i.e. saving/loading data) for more modularity and possible plugins later on.

Spurious warnings by tomcat upon exit

What happened?

When exiting, I get the following warnings in the logs.

This happens since Spring Boot 2.7.3 and because of the following commit: spring-projects/spring-boot@45ad155

Tomcat has some memory leaks detection that kicks in on shutdown.

This doesn't happen when using --no-gui and it's caused by:

  1. The STOMP web sockets (clientInbouldChannel-* and clientOutboundChannel-1 threads)
  2. The SSE notifications (CompletableFutureDelayScheduler thread)

I'm still unsure of why it happens. Case 1 should be handled by Spring Boot IMHO and case 2 becomes needlessly complicated when putting an own executor and shutting it down (there's not even a way to have it done before tomcat shuts down).

How to reproduce

  1. Run Xeres in UI mode
  2. Select "Exit" in the menu

Version

0.5.2

Which OS are you running?

Windows

Relevant log output

2022-09-25 18:03:59.373  INFO 24112 --- [lication Thread] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2022-09-25 18:03:59.375  INFO 24112 --- [lication Thread] o.a.c.c.C.[Tomcat].[localhost].[/]       : Destroying Spring FrameworkServlet 'dispatcherServlet'
2022-09-25 18:03:59.378  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.379  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.379  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.380  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientOutboundChannel-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.381  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.382  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-5] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.383  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-6] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.384  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [CompletableFutureDelayScheduler] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.park(LockSupport.java:341)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:506)
 [email protected]/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3464)
 [email protected]/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3435)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1623)
 [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1170)
 [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.385  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-7] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.386  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-8] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:03:59.387  WARN 24112 --- [lication Thread] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [clientInboundChannel-9] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
 [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
 [email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1672)
 [email protected]/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:460)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1061)
 [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1122)
 [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [email protected]/java.lang.Thread.run(Thread.java:833)
2022-09-25 18:04:01.481  INFO 24112 --- [lication Thread] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2022-09-25 18:04:01.485  INFO 24112 --- [lication Thread] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-09-25 18:04:01.592  INFO 24112 --- [lication Thread] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

Prefer direct connections for clients on the same LAN

When a peer has the same external IP address as us, prefer its LAN IP address. Using the external one still works most of the time but it's less efficient.

Short Invites include the LAN IP and there's Broadcast Discovery too.

Identities aren't transferred properly from Xeres to Retroshare

Using discovery, the following transfers work:

  • Retroshare -> Retroshare
  • Retroshare -> Xeres
  • Xeres -> Xeres

but the following fails:

  • Xeres -> Retroshare

To reproduce, simply connect 2 clients together. Check the logs on Xeres' side then notice that the identities never show up on Retroshare's contacts UI.

Maybe check with the Retroshare team if they have a better idea of which debugging output should be enabled to find out which part if failing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.