[omniORB] bidirectional omniORB, NAT and idle timeouts

Michael Teske subscribe at teskor.de
Thu Sep 10 14:06:50 UTC 2026


Hi,

On 8/14/26 7:40 PM, Duncan Grisby wrote:
[...]
>> Is there any solution for this available yet? I thought about
>> hacking TCP_KEEPIDLE on linux into the socket options, but before
>> doing that I thought I ask here first.
>
> I don't think you are likely to have much luck with doing that. It
> might make it somewhat less likely for the NAT server to drop your
> connection, but sooner or later something will cause the connection to
> drop.

I finally managed to do some tests. I stumbled over libkeepalive, which intercepts

all socket() calls to do exacly this.

When I set these env vars:

LD_PRELOAD=libkeepalive.so
KEEPCNT=10
KEEPIDLE=600
KEEPINTVL=60

Our problems go away (for now, that is :-) )

Of course it would be nicer to not LD_PRELOADing any libs. If I'd send you a patch to

add some parameters to omniORB which optionally set these socket options, is there a chance it would get accepted?

If not, I'll save the work and live with the libkeepalive solution.

> A more robust solution would be to periodically make an explicit CORBA
> call from the client to the server, re-sending the callback object
> reference. Normally that periodic call would reuse the existing
> connection, but if the connection is dropped for any reason, a new one
> will be opened. It is important to re-send the callback because
> bidirectional callbacks are only allowed on the same connection that
> was used to receive the object reference.

Of course we have ways to recover from a closed connection but it generates some errors, which

I'd like to prevent, if possible.



Greetings,

   Michael

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.omniorb-support.com/pipermail/omniorb-list/attachments/20260910/d10cd739/attachment.htm>


More information about the omniORB-list mailing list