prevblk && htx_get_blk_type(prevblk) > HTX_BLK_HDR;
prevblk = htx_get_prev_blk(htx, blk)) {
- /* Swap .addr and .info fields */
+ /* Swap .flags, .addr and .info fields */
+ blk->flags ^= prevblk->flags; prevblk->flags ^= blk->flags; blk->flags ^= prevblk->flags;
blk->addr ^= prevblk->addr; prevblk->addr ^= blk->addr; blk->addr ^= prevblk->addr;
blk->info ^= prevblk->info; prevblk->info ^= blk->info; blk->info ^= prevblk->info;
blk = prevblk;
prevblk && htx_get_blk_type(prevblk) > HTX_BLK_TLR;
prevblk = htx_get_prev_blk(htx, blk)) {
- /* Swap .addr and .info fields */
+ /* Swap .flags, .addr and .info fields */
+ blk->flags ^= prevblk->flags; prevblk->flags ^= blk->flags; blk->flags ^= prevblk->flags;
blk->addr ^= prevblk->addr; prevblk->addr ^= blk->addr; blk->addr ^= prevblk->addr;
blk->info ^= prevblk->info; prevblk->info ^= blk->info; blk->info ^= prevblk->info;
blk = prevblk;
if (type == HTX_BLK_REQ_SL || type == HTX_BLK_RES_SL) {
sl = htx_get_blk_ptr(htx, blk);
- chunk_appendf(chunk, "\t\t[%u] type=%-17s - size=%-6u - addr=%-6u\t%.*s %.*s %.*s\n",
- pos, htx_blk_type_str(type), sz, blk->addr,
+ chunk_appendf(chunk, "\t\t[%u] type=%-17s - flags=0x%04x - size=%-6u - addr=%-6u\t%.*s %.*s %.*s\n",
+ pos, htx_blk_type_str(type), blk->flags, sz, blk->addr,
HTX_SL_P1_LEN(sl), HTX_SL_P1_PTR(sl),
HTX_SL_P2_LEN(sl), HTX_SL_P2_PTR(sl),
HTX_SL_P3_LEN(sl), HTX_SL_P3_PTR(sl));
}
else if (type == HTX_BLK_HDR || type == HTX_BLK_TLR)
- chunk_appendf(chunk, "\t\t[%u] type=%-17s - size=%-6u - addr=%-6u\t%.*s: %.*s\n",
- pos, htx_blk_type_str(type), sz, blk->addr,
+ chunk_appendf(chunk, "\t\t[%u] type=%-17s - flags=0x%04x - size=%-6u - addr=%-6u\t%.*s: %.*s\n",
+ pos, htx_blk_type_str(type), blk->flags, sz, blk->addr,
(int)MIN(n.len, 32), n.ptr,
(int)MIN(v.len, 64), v.ptr);
else
- chunk_appendf(chunk, "\t\t[%u] type=%-17s - size=%-6u - addr=%-6u%s\n",
- pos, htx_blk_type_str(type), sz, blk->addr,
+ chunk_appendf(chunk, "\t\t[%u] type=%-17s - flags=0x%04x - size=%-6u - addr=%-6u%s\n",
+ pos, htx_blk_type_str(type), blk->flags, sz, blk->addr,
(!v.len ? "\t<empty>" : ""));
}
}
htx_memcpy(htx_get_blk_ptr(tmp, newblk), htx_get_blk_ptr(htx, oldblk), blksz);
break;
};
+ newblk->flags |= oldblk->flags;
/* update the start-line position */
if (htx->first == old)
newblk = htx_get_blk(htx, new++);
newblk->info = posblk->info;
newblk->addr = posblk->addr;
+ newblk->flags = posblk->flags;
}
BUG_ON(!new);
htx->head = 0;
htx->head = htx->tail = htx->first = 0;
blk = htx_get_blk(htx, htx->tail);
blk->addr = 0;
+ blk->flags = HTX_BLK_FL_NONE;
htx->data = blksz;
htx->tail_addr = blksz;
return blk;
return NULL;
BUG_ON(blk->addr > htx->size);
+ blk->flags = HTX_BLK_FL_NONE;
blk->info = (type << 28);
if (type < HTX_BLK_EOH)
htx->hdrs_data += blksz;
dst_full = 1;
goto stop;
}
+ last_dstblk->flags = blk->flags;
break;
default:
dst_full = 1;
goto stop;
}
+ last_dstblk->flags = blk->flags;
last_dstblk->info = blk->info;
htx_memcpy(htx_get_blk_ptr(dst, last_dstblk), htx_get_blk_ptr(src, blk), sz);
last_dstblk_sz = sz;
break;
/* Swap .addr and .info fields */
+ blk->flags ^= pblk->flags; pblk->flags ^= blk->flags; blk->flags ^= pblk->flags;
blk->addr ^= pblk->addr; pblk->addr ^= blk->addr; blk->addr ^= pblk->addr;
blk->info ^= pblk->info; pblk->info ^= blk->info; blk->info ^= pblk->info;
for (pblk = htx_get_prev_blk(htx, cblk); pblk; pblk = htx_get_prev_blk(htx, pblk)) {
htx->flags |= HTX_FL_UNORDERED;
- /* Swap .addr and .info fields */
+ /* Swap .flags, .addr and .info fields */
+ cblk->flags ^= pblk->flags; pblk->flags ^= cblk->flags; cblk->flags ^= pblk->flags;
cblk->addr ^= pblk->addr; pblk->addr ^= cblk->addr; cblk->addr ^= pblk->addr;
cblk->info ^= pblk->info; pblk->info ^= cblk->info; cblk->info ^= pblk->info;
newblk = htx_add_blk(dst, type, blksz);
if (!newblk)
goto error;
+ newblk->flags = blk->flags;
newblk->info = blk->info;
htx_memcpy(htx_get_blk_ptr(dst, newblk), htx_get_blk_ptr(src, blk), blksz);
}