Status ConnectionOut::sendPacketWithHeader(Packet& p, PacketHeader h){ assert(&p != &buffer); do { size_t n = std::min(p.remaining(), NRG_MAX_PACKET_SIZE - PacketHeader::size); if(p.remaining() > NRG_MAX_PACKET_SIZE - PacketHeader::size){ h.flags |= PKTFLAG_CONTINUED; } h.write(buffer.reset()); buffer.writeArray(p.getPointer(), n); if(cc.transform) cc.transform->apply(buffer, buffer2.reset()); Packet& sendme = cc.transform ? buffer2 : buffer; last_status = sock.sendPacket(sendme, remote_addr); if(!last_status){ return last_status; } p.seek(n, SEEK_CUR); ++h.frag_index; } while(p.remaining()); return last_status = StatusOK(); }