X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/301c680fd7689527bf5078ca8139eaa5458009de..ad301e487c1b50120d7ca1a9c7cc5fe80f50b944:/receiver.c diff --git a/receiver.c b/receiver.c index dbd8bfdb..a4a3383d 100644 --- a/receiver.c +++ b/receiver.c @@ -297,9 +297,10 @@ static int receive_data(int f_in,struct map_struct *buf,int fd,char *fname, } -/* main routine for receiver process. Receiver process runs on the - same host as the generator process. */ - +/** + * main routine for receiver process. + * + * Receiver process runs on the same host as the generator process. */ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) { int fd1,fd2; @@ -317,6 +318,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) extern struct stats stats; extern int preserve_perms; extern int delete_after; + extern int orig_umask; struct stats initial_stats; if (verbose > 2) { @@ -427,6 +429,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) rprintf(FERROR,"mkstemp %s failed: %s\n",fnametmp,strerror(errno)); receive_data(f_in,buf,-1,NULL,file->length); if (buf) unmap_file(buf); + if (fd1 != -1) close(fd1); continue; } @@ -434,7 +437,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) because their information should have been previously transferred, but that may not be the case with -R */ if (fd2 == -1 && relative_paths && errno == ENOENT && - create_directory_path(fnametmp) == 0) { + create_directory_path(fnametmp, orig_umask) == 0) { strlcpy(fnametmp, template, sizeof(fnametmp)); fd2 = do_mkstemp(fnametmp, file->mode & INITACCESSPERMS); }