mirror of
https://github.com/samba-team/samba.git
synced 2025-03-01 04:58:35 +03:00
Most RPC requests do not need a full fragment, start smaller
This commit is contained in:
parent
b1677505a5
commit
32a7529243
@ -267,12 +267,12 @@ bool prs_grow(prs_struct *ps, uint32 extra_space)
|
||||
|
||||
extra_space -= (ps->buffer_size - ps->data_offset);
|
||||
if(ps->buffer_size == 0) {
|
||||
/*
|
||||
* Ensure we have at least a PDU's length, or extra_space, whichever
|
||||
* is greater.
|
||||
*/
|
||||
|
||||
new_size = MAX(RPC_MAX_PDU_FRAG_LEN,extra_space);
|
||||
/*
|
||||
* Start with 128 bytes (arbitrary value), enough for small rpc
|
||||
* requests
|
||||
*/
|
||||
new_size = MAX(128, extra_space);
|
||||
|
||||
if((ps->data_p = (char *)SMB_MALLOC(new_size)) == NULL) {
|
||||
DEBUG(0,("prs_grow: Malloc failure for size %u.\n", (unsigned int)new_size));
|
||||
@ -281,10 +281,13 @@ bool prs_grow(prs_struct *ps, uint32 extra_space)
|
||||
memset(ps->data_p, '\0', (size_t)new_size );
|
||||
} else {
|
||||
/*
|
||||
* If the current buffer size is bigger than the space needed, just
|
||||
* double it, else add extra_space.
|
||||
* If the current buffer size is bigger than the space needed,
|
||||
* just double it, else add extra_space. Always keep 64 bytes
|
||||
* more, so that after we added a large blob we don't have to
|
||||
* realloc immediately again.
|
||||
*/
|
||||
new_size = MAX(ps->buffer_size*2, ps->buffer_size + extra_space);
|
||||
new_size = MAX(ps->buffer_size*2,
|
||||
ps->buffer_size + extra_space + 64);
|
||||
|
||||
if ((ps->data_p = (char *)SMB_REALLOC(ps->data_p, new_size)) == NULL) {
|
||||
DEBUG(0,("prs_grow: Realloc failure for size %u.\n",
|
||||
|
@ -77,7 +77,7 @@ static bool pipe_init_outgoing_data(pipes_struct *p)
|
||||
* Initialize the outgoing RPC data buffer.
|
||||
* we will use this as the raw data area for replying to rpc requests.
|
||||
*/
|
||||
if(!prs_init(&o_data->rdata, RPC_MAX_PDU_FRAG_LEN, p->mem_ctx, MARSHALL)) {
|
||||
if(!prs_init(&o_data->rdata, 128, p->mem_ctx, MARSHALL)) {
|
||||
DEBUG(0,("pipe_init_outgoing_data: malloc fail.\n"));
|
||||
return False;
|
||||
}
|
||||
@ -128,7 +128,7 @@ static struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
|
||||
* change the type to UNMARSALLING before processing the stream.
|
||||
*/
|
||||
|
||||
if(!prs_init(&p->in_data.data, RPC_MAX_PDU_FRAG_LEN, p->mem_ctx, MARSHALL)) {
|
||||
if(!prs_init(&p->in_data.data, 128, p->mem_ctx, MARSHALL)) {
|
||||
DEBUG(0,("open_rpc_pipe_p: malloc fail for in_data struct.\n"));
|
||||
talloc_destroy(p->mem_ctx);
|
||||
close_policy_by_pipe(p);
|
||||
|
Loading…
x
Reference in New Issue
Block a user