diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c
index 830b03832d9f1278afb593016e5027c96383e4f3..502ad5b1ce04b09437f9e13dd6488f1e2d27bc48 100644
--- a/res/res_pjsip/config_transport.c
+++ b/res/res_pjsip/config_transport.c
@@ -739,6 +739,8 @@ static int transport_apply(const struct ast_sorcery *sorcery, void *obj)
 		ast_log(LOG_WARNING, "Transport '%s' is not fully reloadable, not reloading: protocol, bind, TLS, TCP, ToS, or CoS options.\n", transport_id);
 		temp_state->state->transport = perm_state->state->transport;
 		perm_state->state->transport = NULL;
+		temp_state->state->factory = perm_state->state->factory;
+		perm_state->state->factory = NULL;
 		res = PJ_SUCCESS;
 	} else if (transport->type == AST_TRANSPORT_UDP) {