]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
IPv6 packet size field doesn't include header size, take this into account
authorNikolay Martynov <mar.kolya@gmail.com>
Thu, 17 Nov 2016 03:26:17 +0000 (22:26 -0500)
committerDavid Woodhouse <dwmw2@infradead.org>
Tue, 13 Dec 2016 11:49:13 +0000 (11:49 +0000)
IPv6 packet's 'length' field contains length of payload excluding headers.
Header's length (40) needs to be added to that to get complete packet length.
This patch seems to be fixing random VPN drops.

Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
oncp.c

diff --git a/oncp.c b/oncp.c
index b0f6d12a3f572073de6328cd7de691da34c53391..3c7cfa1ebf60894a2a24407810642ac6ed4fb165 100644 (file)
--- a/oncp.c
+++ b/oncp.c
@@ -1002,7 +1002,7 @@ int oncp_mainloop(struct openconnect_info *vpninfo, int *timeout)
                                iplen = load_be16(vpninfo->cstp_pkt->data + 2);
                                break;
                        case 6:
-                               iplen = load_be16(vpninfo->cstp_pkt->data + 4);
+                               iplen = load_be16(vpninfo->cstp_pkt->data + 4) + 40;
                                break;
                        default:
                        badiplen: