BUG/MEDIUM: htx: Defrag if blocks position is changed and the payloads wrap

When a header is added or when a data block is added before another one, the
blocks position may be changed (but not their payloads position). For instance,
when a header is added, we move the block just before the EOH, if any. When the
payloads wraps, it is pretty annoying because we loose the last inserted
block. It is neither the tail nor the head. And it is not the front either.

It is a design problem. Waiting for fixing this problem, we force a
defragmentation in such case. Anyway, it should be pretty rare, so it's not
really critical.

This patch must be backported to 1.9.
diff --git a/src/http_htx.c b/src/http_htx.c
index a8c87b7..21a5b57 100644
--- a/src/http_htx.c
+++ b/src/http_htx.c
@@ -183,6 +183,10 @@
 
 		blk = pblk;
 	}
+
+	if (htx_get_blk_pos(htx, blk) != htx->front)
+		htx_defrag(htx, NULL);
+
 	return 1;
 }
 
diff --git a/src/htx.c b/src/htx.c
index de87926..24e387e 100644
--- a/src/htx.c
+++ b/src/htx.c
@@ -841,6 +841,10 @@
 			break;
 		blk = pblk;
 	}
+
+	if (htx_get_blk_pos(htx, blk) != htx->front)
+		htx_defrag(htx, NULL);
+
 	return blk;
 }