X-Git-Url: http://git.samba.org/?p=samba.git;a=blobdiff_plain;f=source3%2Fsmbd%2Fipc.c;fp=source3%2Fsmbd%2Fipc.c;h=dbb259cedc2b1f52bee6dda668af8c7630f4c888;hp=91d5047c4c67a20dccc48a0f545cd71b50fb2c97;hb=2ec49cf57c88735be962b0681b487df5efe7ed6b;hpb=cce1eaea91088efd742891befdaafade0c1fdce6 diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c index 91d5047c4c6..dbb259cedc2 100644 --- a/source3/smbd/ipc.c +++ b/source3/smbd/ipc.c @@ -109,12 +109,14 @@ void send_trans_reply(connection_struct *conn, int lparam = rparam ? rparam_len : 0; struct smbd_server_connection *sconn = req->sconn; int max_send = sconn->smb1.sessions.max_send; + /* HACK: make sure we send at least 128 byte in one go */ + int hdr_overhead = SMB_BUFFER_SIZE_MIN - 128; if (buffer_too_large) DEBUG(5,("send_trans_reply: buffer %d too large\n", ldata )); - this_lparam = MIN(lparam,max_send - 500); /* hack */ - this_ldata = MIN(ldata,max_send - (500+this_lparam)); + this_lparam = MIN(lparam,max_send - hdr_overhead); + this_ldata = MIN(ldata,max_send - (hdr_overhead+this_lparam)); align = ((this_lparam)%4); @@ -163,9 +165,9 @@ void send_trans_reply(connection_struct *conn, while (tot_data_sent < ldata || tot_param_sent < lparam) { this_lparam = MIN(lparam-tot_param_sent, - max_send - 500); /* hack */ + max_send - hdr_overhead); this_ldata = MIN(ldata -tot_data_sent, - max_send - (500+this_lparam)); + max_send - (hdr_overhead+this_lparam)); if(this_lparam < 0) this_lparam = 0;