[reSIProcate] forcing re-REGISTER

Matthew Reilly matthew.reilly at sipphone.com
Thu Apr 14 16:17:27 CDT 2005


Resip Team,

I'm doing something tricky, and I don't know if it's safe.

I'm calling DialogUsageManager::send() from within
Transport::BuildFdSet() to force a re-REGISTER.

Is this safe to do?


Background:

I'm creating a new transport which sends all SIP traffic through a
tunnel to a remote end point. To gracefully handle the case that the
remote end point crashes, I have the transport attempt to create a new
tunnel. Once a new tunnel has been recreated, I want to force a REGISTER
to occur to inform the remote end that a new tunnel has been created.
For simplicity sake, I cause the REGISTER to occur from within the
transport itself.

Some Psuedo Code:

extern DialogUsageManager *dumUac;

void TunnelTransport::buildFdSet( FdSet& fdset )
{
	if (connection is broken) {
		// recreate tunnel

		// Force  re-REGISTER
        	SipMessage regMessage = dumUac->makeRegistration(...);
        	dumUac->send( regMessage );
	}
	// Continue with rest of buildFdSet
}


So far while testing this, it works fine, but I'm worried that there may
be some possible locking/re-entrancy issue that I've not yet hit. 

Is what I've done safe?

Thanks,
-Matt




More information about the resiprocate-devel mailing list