diff options
-rw-r--r-- | source3/param/loadparm.c | 13 | ||||
-rw-r--r-- | source3/smbd/reply.c | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 7607760cca..67128c75d2 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -384,7 +384,9 @@ typedef struct BOOL bUseClientDriver; BOOL bDefaultDevmode; BOOL bNTAclSupport; - +#ifdef WITH_SENDFILE + BOOL bUseSendfile; +#endif char dummy[3]; /* for alignment */ } service; @@ -504,6 +506,9 @@ static service sDefault = { False, /* bUseClientDriver */ False, /* bDefaultDevmode */ True, /* bNTAclSupport */ +#ifdef WITH_SENDFILE + False, /* bUseSendfile */ +#endif "" /* dummy */ }; @@ -841,6 +846,9 @@ static struct parm_struct parm_table[] = { {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_SHARE}, {"sync always", P_BOOL, P_LOCAL, &sDefault.bSyncAlways, NULL, NULL, FLAG_SHARE}, {"use mmap", P_BOOL, P_GLOBAL, &Globals.bUseMmap, NULL, NULL, FLAG_DEVELOPER}, +#ifdef WITH_SENDFILE + {"use sendfile", P_BOOL, P_LOCAL, &sDefault.bUseSendfile, NULL, NULL, FLAG_SHARE}, +#endif {"hostname lookups", P_BOOL, P_GLOBAL, &Globals.bHostnameLookups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"write cache size", P_INTEGER, P_LOCAL, &sDefault.iWriteCacheSize, NULL, NULL, FLAG_SHARE}, @@ -1728,6 +1736,9 @@ FN_LOCAL_BOOL(lp_inherit_acls, bInheritACLS) FN_LOCAL_BOOL(lp_use_client_driver, bUseClientDriver) FN_LOCAL_BOOL(lp_default_devmode, bDefaultDevmode) FN_LOCAL_BOOL(lp_nt_acl_support, bNTAclSupport) +#ifdef WITH_SENDFILE +FN_LOCAL_BOOL(lp_use_sendfile, bUseSendfile) +#endif FN_LOCAL_INTEGER(lp_create_mask, iCreate_mask) FN_LOCAL_INTEGER(lp_force_create_mode, iCreate_force_mode) FN_LOCAL_INTEGER(lp_security_mask, iSecurity_mask) diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index b8a89b1d9d..4c7d73bc6e 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -1698,7 +1698,7 @@ int send_file_readX(connection_struct *conn, char *inbuf,char *outbuf,int length * that is exclusively oplocked. */ - if ((CVAL(inbuf,smb_vwv0) == 0xFF) && EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type)) { + if ((CVAL(inbuf,smb_vwv0) == 0xFF) && EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type) && lp_use_sendfile(SNUM(conn)) ) { SMB_STRUCT_STAT sbuf; DATA_BLOB header; |