The first time you call StreamConvergenceLayer::Connection::process_data() it calls handle_contact_initiation() to initiate a new link. Eventually, this method ends up calling new_link_params(), which will overwrite some of the parameters that handle_contact_initiation() previously set plus any link specific parameters you may have set such a the network address of the remote BPA that is trying to establish an ON_DEMAND link with you. I encountered this problem with my custom convergence layer that is modelled after the TCPConvergenceLayer. I have not had time to verify it on the TCPConvergenceLayer.
Edited Stack Trace of Error