diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index daeb7cf503614bb497f9feea2c8e46e0118e9b5e..495791478de26d776abcf45018a4e725ccb6f313 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -9456,11 +9456,18 @@ static void *ss7_linkset(void *data)
 				}
 				p = linkset->pvts[chanpos];
 				ast_mutex_lock(&p->lock);
+
 				p->inservice = 1;
 				p->remotelyblocked = 0;
 				dpc = p->dpc;
 				isup_set_call_dpc(e->rsc.call, dpc);
+				if (p->ss7call)
+					p->ss7call = NULL;
+				if (p->owner)
+					p->owner->_softhangup |= AST_SOFTHANGUP_DEV;
+
 				ast_mutex_unlock(&p->lock);
+
 				isup_rlc(ss7, e->rsc.call);
 				break;
 			case ISUP_EVENT_GRS: