You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It seems that there is a problem with using skb header when allocating more than one skb - in tfw_http_msg_setup() each skb is allocated with a place under the header:
…aged fragments
ss_skb_frag_next() is always work with TfwMsgIter, so renamed and moved
into msg.h, the whole TfwMsgIter became invalid if the function fails.
* Don't create linear skb part for huge messages, it's easier to walk
over them using TfwMsgIter
* ss_skb_frag_next() is always work with TfwMsgIter, so renamed and moved
into msg.h.
* tfw_http_msg_add_data() and tfw_msg_write() are very similar functions,
unify them
…aged fragments
ss_skb_frag_next() is always work with TfwMsgIter, so renamed and moved
into msg.h, the whole TfwMsgIter became invalid if the function fails.
Noticed by @aleksostapenko in #1162 (comment)
It seems that there is a problem with using skb header when allocating more than one skb - in
tfw_http_msg_setup()
each skb is allocated with a place under the header:tempesta/tempesta_fw/ss_skb.h
Line 174 in 5631d72
but in
tfw_msg_write()
only the header of the first skb in list is used (it->frag < 0
):tempesta/tempesta_fw/msg.c
Line 59 in 5631d72
for subsequent skb
it-> frag
is always initialized to zero:tempesta/tempesta_fw/ss_skb.h
Line 132 in 5631d72
so then we always fall into the
it->frag >= 0
branch.Looks like the current master version of
tfw_msg_write()
has the same issue.The text was updated successfully, but these errors were encountered: