paging_request() now returns the number of started paging requests

this helps the caller to determine if he will ever get called back
or not (and if he should free his data structures now or not)
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index a7f69d1..277a321 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -1046,7 +1046,7 @@
 	/* if not, we have to start paging */
 	rc = paging_request(subscr->net, subscr, RSL_CHANNEED_SDCCH,
 			    paging_cb_send_sms, sms);
-	if (rc < 0)
+	if (rc <= 0)
 		sms_free(sms);
 
 	return 0;
diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c
index f7ee81d..87c5a54 100644
--- a/openbsc/src/paging.c
+++ b/openbsc/src/paging.c
@@ -247,13 +247,16 @@
 		   int type, gsm_cbfn *cbfn, void *data)
 {
 	struct gsm_bts *bts = NULL;
-	int rc;
+	int num_pages = 0;
 
 	/* start paging subscriber on all BTS within Location Area */
 	do {
+		int rc;
+
 		bts = gsm_bts_by_lac(network, subscr->lac, bts);
 		if (!bts)
 			break;
+		num_pages++;
 
 		/* Trigger paging, pass any error to caller */
 		rc = _paging_request(bts, subscr, type, cbfn, data);
@@ -261,7 +264,7 @@
 			return rc;
 	} while (1);
 
-	return 0;
+	return num_pages;
 }