diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c
index 0caa1b1d95..1e7e68f750 100644
--- a/src/mod/endpoints/mod_sofia/sofia_presence.c
+++ b/src/mod/endpoints/mod_sofia/sofia_presence.c
@@ -2935,16 +2935,19 @@ void sofia_presence_handle_sip_i_subscribe(int status,
 		proto = alt_proto;
 	}
 	
-	sql = switch_mprintf("select count(*) from sip_subscriptions where call_id='%q'", call_id);
-	sofia_glue_execute_sql2str(profile, profile->ireg_mutex, sql, buf, sizeof(buf));
+	if ((sub_state != nua_substate_terminated)) {
+		sql = switch_mprintf("select count(*) from sip_subscriptions where call_id='%q'", call_id);
+		sofia_glue_execute_sql2str(profile, profile->ireg_mutex, sql, buf, sizeof(buf));
+		switch_safe_free(sql);
 
-	if (mod_sofia_globals.debug_presence > 0 || mod_sofia_globals.debug_sla > 0) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
-						  "check subs sql: %s [%s]\n", sql, buf);
-	}
+		if (mod_sofia_globals.debug_presence > 0 || mod_sofia_globals.debug_sla > 0) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
+							  "check subs sql: %s [%s]\n", sql, buf);
+		}
 
-	if ((subbed = atoi(buf)) > 0) {
-		sub_state = nua_substate_active;
+		if ((subbed = atoi(buf)) > 0) {
+			sub_state = nua_substate_active;
+		}
 	}
 
 	if ((sub_state == nua_substate_active)) {