mirror of
https://github.com/samba-team/samba.git
synced 2025-01-14 19:24:43 +03:00
r1841: Fix for #1606, can't launch dos exe's.
2 related problems - 1). DOS uses chained commands - when we are replying with sendfile we neglect to send the chained header. 2). Win9x and DOS TCP stacks blow up when getting data back from a Linux sendfile - "The engines canna take the strain cap'n". Don't use sendfile for anything less than NT1. Jeremy.
This commit is contained in:
parent
08037bd442
commit
3cd88f48af
@ -4320,6 +4320,11 @@ int lp_maxprintjobs(int snum)
|
|||||||
|
|
||||||
BOOL lp_use_sendfile(int snum)
|
BOOL lp_use_sendfile(int snum)
|
||||||
{
|
{
|
||||||
|
extern int Protocol;
|
||||||
|
/* Using sendfile blows the brains out of any DOS or Win9x TCP stack... JRA. */
|
||||||
|
if (Protocol < PROTOCOL_NT1) {
|
||||||
|
return False;
|
||||||
|
}
|
||||||
return (_lp_use_sendfile(snum) && (get_remote_arch() != RA_WIN95) && !srv_is_signing_active());
|
return (_lp_use_sendfile(snum) && (get_remote_arch() != RA_WIN95) && !srv_is_signing_active());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1735,7 +1735,7 @@ void send_file_readbraw(connection_struct *conn, files_struct *fsp, SMB_OFF_T st
|
|||||||
* reply_readbraw has already checked the length.
|
* reply_readbraw has already checked the length.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((nread > 0) && (lp_write_cache_size(SNUM(conn)) == 0) && lp_use_sendfile(SNUM(conn)) ) {
|
if (chain_size ==0 && (nread > 0) && (lp_write_cache_size(SNUM(conn)) == 0) && lp_use_sendfile(SNUM(conn)) ) {
|
||||||
DATA_BLOB header;
|
DATA_BLOB header;
|
||||||
|
|
||||||
_smb_setlen(outbuf,nread);
|
_smb_setlen(outbuf,nread);
|
||||||
@ -2075,7 +2075,7 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length
|
|||||||
* on a train in Germany :-). JRA.
|
* on a train in Germany :-). JRA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((CVAL(inbuf,smb_vwv0) == 0xFF) && lp_use_sendfile(SNUM(conn)) &&
|
if (chain_size ==0 && (CVAL(inbuf,smb_vwv0) == 0xFF) && lp_use_sendfile(SNUM(conn)) &&
|
||||||
(lp_write_cache_size(SNUM(conn)) == 0) ) {
|
(lp_write_cache_size(SNUM(conn)) == 0) ) {
|
||||||
SMB_STRUCT_STAT sbuf;
|
SMB_STRUCT_STAT sbuf;
|
||||||
DATA_BLOB header;
|
DATA_BLOB header;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user