This whole if block is an informational message if the Connection changed between our entry into this function and the part where we took the SimpleMessenger::lock so that anybody looking at the logs knows that's why the con pointer has changed for the next call. We do that because the Connection could have been *removed* and then a new one been established to the peer during our unlocked period.
So we *are* doing the simplest form of "lock and unconditionally call back into submit_message with true" — we're required to have the pointers set correctly before doing so and that's why we're doing _lookup_pipe().