diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-05-12 18:38:45 +0000 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-05-12 20:53:42 +0200 |
commit | 8272c7723167ccfe20483841ae3203cc0cb83682 (patch) | |
tree | d959ef872dc808130c95011a8689e4ef93b34dd3 /openbsc/src | |
parent | 22229d684124d6d9c4eb83e9776a620af1c552b0 (diff) |
GPRS: We have to do the msgb_free() in NS not Gb Proxy
As only NS-UNITDATA messages are ever passed into the Gb Proxy,
we need to do the msgb_free() at a much higher point in the calling
stack, i.e. inside the NS protocol layer. This means it is now
the same logic as in OpenBSC itself.
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/gprs/gb_proxy.c | 4 | ||||
-rw-r--r-- | openbsc/src/gprs/gprs_ns.c | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c index 7203a4bc2..ffaf24060 100644 --- a/openbsc/src/gprs/gb_proxy.c +++ b/openbsc/src/gprs/gb_proxy.c @@ -491,10 +491,6 @@ int gbprox_rcvmsg(struct msgb *msg, struct gprs_nsvc *nsvc, uint16_t ns_bvci) } } - /* We free the original message here, as we will have created a - * copy in case it is forwarded to another peer */ - msgb_free(msg); - return rc; } diff --git a/openbsc/src/gprs/gprs_ns.c b/openbsc/src/gprs/gprs_ns.c index 1b9d7c6d5..11637f7fa 100644 --- a/openbsc/src/gprs/gprs_ns.c +++ b/openbsc/src/gprs/gprs_ns.c @@ -793,7 +793,11 @@ static int handle_nsip_read(struct bsc_fd *bfd) if (!msg) return error; - return gprs_ns_rcvmsg(nsi, msg, &saddr); + error = gprs_ns_rcvmsg(nsi, msg, &saddr); + + msgb_free(msg); + + return error; } static int handle_nsip_write(struct bsc_fd *bfd) |