revert: tcp_reassembly_pop() check ptr && tcp_segment_init() reduce memset
This commit is contained in:
@@ -33,6 +33,15 @@ struct tcp_reassembly
|
|||||||
struct tcp_segment *tcp_segment_new(uint32_t seq, const void *data, uint32_t len)
|
struct tcp_segment *tcp_segment_new(uint32_t seq, const void *data, uint32_t len)
|
||||||
{
|
{
|
||||||
struct tcp_segment_private *p = (struct tcp_segment_private *)malloc(sizeof(struct tcp_segment_private) + len);
|
struct tcp_segment_private *p = (struct tcp_segment_private *)malloc(sizeof(struct tcp_segment_private) + len);
|
||||||
|
if (!p)
|
||||||
|
{
|
||||||
|
TCP_REASSEMBLY_LOG_ERROR("calloc failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->ts = 0;
|
||||||
|
p->id = 0;
|
||||||
|
|
||||||
p->node.start = seq;
|
p->node.start = seq;
|
||||||
p->node.last = (uint64_t)seq + (uint64_t)len - 1;
|
p->node.last = (uint64_t)seq + (uint64_t)len - 1;
|
||||||
p->data = (char *)p + sizeof(struct tcp_segment_private);
|
p->data = (char *)p + sizeof(struct tcp_segment_private);
|
||||||
@@ -65,8 +74,10 @@ struct tcp_reassembly *tcp_reassembly_new(uint64_t max_timeout, uint64_t max_seg
|
|||||||
assembler->max_timeout = max_timeout;
|
assembler->max_timeout = max_timeout;
|
||||||
assembler->max_seg_num = max_seg_num;
|
assembler->max_seg_num = max_seg_num;
|
||||||
assembler->cur_seg_num = 0;
|
assembler->cur_seg_num = 0;
|
||||||
assembler->root = RB_ROOT_CACHED;
|
assembler->sum_seg_num = 0;
|
||||||
INIT_LIST_HEAD(&assembler->list);
|
INIT_LIST_HEAD(&assembler->list);
|
||||||
|
assembler->root = RB_ROOT_CACHED;
|
||||||
|
assembler->recv_next = 0;
|
||||||
|
|
||||||
return assembler;
|
return assembler;
|
||||||
}
|
}
|
||||||
@@ -167,8 +178,6 @@ struct tcp_segment *tcp_reassembly_pop(struct tcp_reassembly *assembler)
|
|||||||
node = interval_tree_iter_next(node, assembler->recv_next, assembler->recv_next);
|
node = interval_tree_iter_next(node, assembler->recv_next, assembler->recv_next);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(oldest==NULL)return NULL;
|
|
||||||
|
|
||||||
list_del(&oldest->lru);
|
list_del(&oldest->lru);
|
||||||
interval_tree_remove(&oldest->node, &assembler->root);
|
interval_tree_remove(&oldest->node, &assembler->root);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user