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 );