X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frmr%2Fnng%2Fsrc%2Frtable_nng_static.c;h=4f413be6b64a297b9ed1a16bcdba9e86cab11a76;hb=e21dbee1d382e73d1897f96c0bd450f216389b74;hp=da4101bccd34398bfa8e4d70032e154b4844c0aa;hpb=6511ac74cdc367a94bffeb3743624775acd52c5b;p=ric-plt%2Flib%2Frmr.git diff --git a/src/rmr/nng/src/rtable_nng_static.c b/src/rmr/nng/src/rtable_nng_static.c index da4101b..4f413be 100644 --- a/src/rmr/nng/src/rtable_nng_static.c +++ b/src/rmr/nng/src/rtable_nng_static.c @@ -61,18 +61,30 @@ */ //static int uta_link2( char* target, nng_socket* nn_sock, nng_dialer* dialer, pthread_mutex* gate ) { static int uta_link2( endpoint_t* ep ) { + static int flags = -1; + char* target; nng_socket* nn_sock; nng_dialer* dialer; char conn_info[NNG_MAXADDRLEN]; // string to give to nano to make the connection char* addr; int state = FALSE; + char* tok; if( ep == NULL ) { return FALSE; } - target = ep->addr; + if( flags < 0 ) { + tok = getenv( "RMR_ASYNC_CONN" ); + if( tok == NULL || *tok == '1' ) { + flags = NNG_FLAG_NONBLOCK; // start dialer asynch + } else { + flags = NO_FLAGS; + } + } + + target = ep->name; // always give name to transport so chaning dest IP does not break reconnect nn_sock = &ep->nn_sock; dialer = &ep->dialer; @@ -110,7 +122,7 @@ static int uta_link2( endpoint_t* ep ) { nng_dialer_setopt_ms( *dialer, NNG_OPT_RECONNMAXT, 2000 ); // cap backoff on retries to reasonable amount (2s) nng_dialer_setopt_ms( *dialer, NNG_OPT_RECONNMINT, 100 ); // start retry 100m after last failure with 2s cap - if( (state = nng_dialer_start( *dialer, NO_FLAGS )) != 0 ) { // can fail immediatly (unlike nanomsg) + if( (state = nng_dialer_start( *dialer, flags )) != 0 ) { // can fail immediatly (unlike nanomsg) pthread_mutex_unlock( &ep->gate ); fprintf( stderr, "[WRN] rmr: unable to create link to target: %s: %s\n", target, nng_strerror( state ) ); nng_close( *nn_sock );