EINVAL is also a valid error return, meaning "this filesystem
authorAndrew Tridgell <tridge@samba.org>
Tue, 26 Aug 2008 04:06:42 +0000 (14:06 +1000)
committerMichael Adam <obnox@samba.org>
Tue, 26 Aug 2008 12:39:43 +0000 (14:39 +0200)
cannot do sendfile for this file"
(This used to be commit 737f664604b28f230be63bfc2f3d516fd9eb1c63)

source3/smbd/reply.c

index b3d691fbe7ed066b5478bee950b5ef0aa100f553..06aa835cb0e975356619dab725177c055af76a67 100644 (file)
@@ -3198,8 +3198,9 @@ static void send_file_readX(connection_struct *conn, struct smb_request *req,
                setup_readX_header((char *)headerbuf, smb_maxcnt);
 
                if ((nread = SMB_VFS_SENDFILE(smbd_server_fd(), fsp, &header, startpos, smb_maxcnt)) == -1) {
-                       /* Returning ENOSYS means no data at all was sent. Do this as a normal read. */
-                       if (errno == ENOSYS) {
+                       /* Returning ENOSYS or EINVAL means no data at all was sent. 
+                          Do this as a normal read. */
+                       if (errno == ENOSYS || errno == EINVAL) {
                                goto normal_read;
                        }