diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index b5f91c4..7801b29 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -136,7 +136,7 @@
 /*! \brief Lookup struct gprs_nsvc based on NSEI
  *  \param[in] nsi NS instance in which to search
  *  \param[in] nsei NSEI to be searched
- *  \returns gprs_nsvc of respective NSEI
+ *  \returns first gprs_nsvc of respective NSEI
  */
 struct gprs_nsvc *gprs_nsvc_by_nsei(struct gprs_ns_inst *nsi, uint16_t nsei)
 {
@@ -148,6 +148,20 @@
 	return NULL;
 }
 
+static struct gprs_nsvc *gprs_active_nsvc_by_nsei(struct gprs_ns_inst *nsi,
+						  uint16_t nsei)
+{
+	struct gprs_nsvc *nsvc;
+	llist_for_each_entry(nsvc, &nsi->gprs_nsvcs, list) {
+		if (nsvc->nsei == nsei) {
+			if (nsvc->state & NSE_S_BLOCKED ||
+			    !(nsvc->state & NSE_S_ALIVE))
+				return nsvc;
+		}
+	}
+	return NULL;
+}
+
 /* Lookup struct gprs_nsvc based on remote peer socket addr */
 static struct gprs_nsvc *nsvc_by_rem_addr(struct gprs_ns_inst *nsi,
 					  struct sockaddr_in *sin)
@@ -559,28 +573,25 @@
 	struct gprs_ns_hdr *nsh;
 	uint16_t bvci = msgb_bvci(msg);
 
-	nsvc = gprs_nsvc_by_nsei(nsi, msgb_nsei(msg));
+	nsvc = gprs_active_nsvc_by_nsei(nsi, msgb_nsei(msg));
 	if (!nsvc) {
-		LOGP(DNS, LOGL_ERROR, "Unable to resolve NSEI %u "
-			"to NS-VC!\n", msgb_nsei(msg));
+		int rc;
+		if (gprs_nsvc_by_nsei(nsi, msgb_nsei(msg))) {
+		    LOGP(DNS, LOGL_ERROR,
+			 "All NS-VCs for NSEI %u are either dead or blocked!\n",
+			 msgb_nsei(msg));
+		    rc = -EBUSY;
+		} else {
+		    LOGP(DNS, LOGL_ERROR, "Unable to resolve NSEI %u "
+			 "to NS-VC!\n", msgb_nsei(msg));
+		    rc = -EINVAL;
+		}
+
 		msgb_free(msg);
-		return -EINVAL;
+		return rc;
 	}
 	log_set_context(GPRS_CTX_NSVC, nsvc);
 
-	if (!(nsvc->state & NSE_S_ALIVE)) {
-		LOGP(DNS, LOGL_ERROR, "NSEI=%u is not alive, cannot send\n",
-			nsvc->nsei);
-		msgb_free(msg);
-		return -EBUSY;
-	}
-	if (nsvc->state & NSE_S_BLOCKED) {
-		LOGP(DNS, LOGL_ERROR, "NSEI=%u is blocked, cannot send\n",
-			nsvc->nsei);
-		msgb_free(msg);
-		return -EBUSY;
-	}
-
 	msg->l2h = msgb_push(msg, sizeof(*nsh) + 3);
 	nsh = (struct gprs_ns_hdr *) msg->l2h;
 	if (!nsh) {
