diff options
-rw-r--r-- | src/gb/gprs_bssgp.c | 3 | ||||
-rw-r--r-- | tests/gb/bssgp_fc_test.c | 12 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c index 0e9fd388..7a5d6285 100644 --- a/src/gb/gprs_bssgp.c +++ b/src/gb/gprs_bssgp.c @@ -696,6 +696,7 @@ int bssgp_fc_in(struct bssgp_flow_control *fc, struct msgb *msg, LOGP(DBSSGP, LOGL_NOTICE, "Single PDU (size=%u) is larger " "than maximum bucket size (%u)!\n", llc_pdu_len, fc->bucket_size_max); + msgb_free(msg); return -EIO; } @@ -1039,6 +1040,7 @@ int bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime, if (bvci <= BVCI_PTM ) { LOGP(DBSSGP, LOGL_ERROR, "Cannot send DL-UD to BVCI %u\n", bvci); + msgb_free(msg); return -EINVAL; } @@ -1046,6 +1048,7 @@ int bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime, if (!bctx) { LOGP(DBSSGP, LOGL_ERROR, "Cannot send DL-UD to unknown BVCI %u\n", bvci); + msgb_free(msg); return -ENODEV; } diff --git a/tests/gb/bssgp_fc_test.c b/tests/gb/bssgp_fc_test.c index 64e4b4eb..ad8f83d6 100644 --- a/tests/gb/bssgp_fc_test.c +++ b/tests/gb/bssgp_fc_test.c @@ -43,18 +43,22 @@ static int fc_out_cb(struct bssgp_flow_control *fc, struct msgb *msg, unsigned int csecs = get_centisec_diff(); csecs = round_decisec(csecs); - printf("%u: FC OUT Nr %lu\n", csecs, (unsigned long) msg); + printf("%u: FC OUT Nr %lu\n", csecs, (unsigned long) msg->cb[0]); + msgb_free(msg); return 0; } static int fc_in(struct bssgp_flow_control *fc, unsigned int pdu_len) { + struct msgb *msg; unsigned int csecs = get_centisec_diff(); csecs = round_decisec(csecs); - printf("%u: FC IN Nr %lu\n", csecs, in_ctr); - bssgp_fc_in(fc, (struct msgb *) in_ctr, pdu_len, NULL); - in_ctr++; + msg = msgb_alloc(1, "fc test"); + msg->cb[0] = in_ctr++; + + printf("%u: FC IN Nr %lu\n", csecs, msg->cb[0]); + bssgp_fc_in(fc, msg, pdu_len, NULL); return 0; } |