From dd1d3f4dbcb80f1de358f20f37f17ee764045303 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Mon, 7 May 2018 08:56:56 +0000 Subject: [PATCH] Fixed fragmentation stuff FossilOrigin-Name: 35cd283b9ae5dcb5c5ca9dca4f020c42329b21b5b53dc6d09a46aa5f91f56532 --- src/cw/conn_send_msg.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cw/conn_send_msg.c b/src/cw/conn_send_msg.c index 980afe74..9866bc53 100644 --- a/src/cw/conn_send_msg.c +++ b/src/cw/conn_send_msg.c @@ -29,8 +29,10 @@ int conn_send_msg(struct conn * conn, uint8_t *rawmsg) mtu = conn->mtu; + while (packetlen>mtu){ - cw_set_hdr_flags(rawmsg,CAPWAP_FLAG_HDR_F,1); + + cw_set_hdr_flags(ptr,CAPWAP_FLAG_HDR_F,1); cw_set_dword(ptr+4, conn->fragid<<16 | fragoffset<<3 ); cw_dbg_pkt(DBG_PKT_OUT,conn,ptr,mtu,(struct sockaddr*)&conn->addr); @@ -43,14 +45,14 @@ int conn_send_msg(struct conn * conn, uint8_t *rawmsg) fragoffset+=(mtu-hlen)/8; packetlen-=mtu-hlen; - + memcpy(ptr,rawmsg,hlen); } if (fragoffset) - cw_set_hdr_flags(rawmsg,CAPWAP_FLAG_HDR_F | CAPWAP_FLAG_HDR_L,1); + cw_set_hdr_flags(ptr,CAPWAP_FLAG_HDR_F | CAPWAP_FLAG_HDR_L,1); else - cw_set_hdr_flags(rawmsg,CAPWAP_FLAG_HDR_F,0); + cw_set_hdr_flags(ptr,CAPWAP_FLAG_HDR_F,0); cw_set_dword(ptr+4, conn->fragid<<16 | fragoffset<<3 );