Skip to content
Snippets Groups Projects
Commit 8bd9e0f0 authored by Martine Lenders's avatar Martine Lenders
Browse files

shell: sc_icmpv6_echo: release payload when pktbuf full


Otherwise it gets never released

Co-Authored-By: default avatarGunar Schorcht <gunar@schorcht.net>
parent 94a89f51
No related branches found
No related tags found
No related merge requests found
...@@ -232,32 +232,36 @@ int _icmpv6_ping(int argc, char **argv) ...@@ -232,32 +232,36 @@ int _icmpv6_ping(int argc, char **argv)
ping_start = xtimer_now_usec64(); ping_start = xtimer_now_usec64();
while ((remaining--) > 0) { while ((remaining--) > 0) {
gnrc_pktsnip_t *pkt; gnrc_pktsnip_t *pkt, *payload;
uint32_t start, timeout = 1 * US_PER_SEC; uint32_t start, timeout = 1 * US_PER_SEC;
pkt = gnrc_icmpv6_echo_build(ICMPV6_ECHO_REQ, id, ++max_seq_expected, payload = gnrc_icmpv6_echo_build(ICMPV6_ECHO_REQ, id,
NULL, payload_len); ++max_seq_expected,
NULL, payload_len);
if (pkt == NULL) { if (payload == NULL) {
puts("error: packet buffer full"); puts("error: packet buffer full");
continue; continue;
} }
_set_payload(pkt->data, payload_len); _set_payload(payload->data, payload_len);
pkt = gnrc_ipv6_hdr_build(pkt, NULL, &addr); pkt = gnrc_ipv6_hdr_build(payload, NULL, &addr);
if (pkt == NULL) { if (pkt == NULL) {
puts("error: packet buffer full"); puts("error: packet buffer full");
gnrc_pktbuf_release(payload);
continue; continue;
} }
if (src_iface != KERNEL_PID_UNDEF) { if (src_iface != KERNEL_PID_UNDEF) {
pkt = gnrc_pktbuf_add(pkt, NULL, sizeof(gnrc_netif_hdr_t), payload = pkt;
pkt = gnrc_pktbuf_add(payload, NULL, sizeof(gnrc_netif_hdr_t),
GNRC_NETTYPE_NETIF); GNRC_NETTYPE_NETIF);
if (pkt == NULL) { if (pkt == NULL) {
puts("error: packet buffer full"); puts("error: packet buffer full");
gnrc_pktbuf_release(payload);
continue; continue;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment