fsm: call 'onenter' as last step of a state change

This is useful to allow the user to terinate the fsm from the onenter()
callback.

Change-Id: Ia45a1f3279e702028250e10dc54b2d46a4039905
diff --git a/src/fsm.c b/src/fsm.c
index 8fedae2..6649b09 100644
--- a/src/fsm.c
+++ b/src/fsm.c
@@ -323,14 +323,15 @@
 	LOGPFSM(fi, "state_chg to %s\n", osmo_fsm_state_name(fsm, new_state));
 	fi->state = new_state;
 
-	if (st->onenter)
-		st->onenter(fi, old_state);
-
 	if (timeout_secs) {
 		fi->T = T;
 		osmo_timer_schedule(&fi->timer, timeout_secs, 0);
 	}
 
+	/* Call 'onenter' last, user might terminate FSM from there */
+	if (st->onenter)
+		st->onenter(fi, old_state);
+
 	return 0;
 }