]> andersk Git - openssh.git/commitdiff
- djm@cvs.openbsd.org 2007/06/12 08:24:20
authordtucker <dtucker>
Tue, 12 Jun 2007 13:41:06 +0000 (13:41 +0000)
committerdtucker <dtucker>
Tue, 12 Jun 2007 13:41:06 +0000 (13:41 +0000)
     [scp.c]
     make scp try to skip FIFOs rather than blocking when nothing is listening.
     depends on the platform supporting sane O_NONBLOCK semantics for open
     on FIFOs (apparently POSIX does not mandate this), which OpenBSD does.
     bz #856; report by cjwatson AT debian.org; ok markus@

ChangeLog
scp.c

index b3a89f62a644dd949e53a8ac2de00b2e26e838eb..a659fb57cf0a887606fc3addc15e94309bf253f2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
      [ssh-gss.h gss-serv.c gss-genr.c]
      relocate server-only GSSAPI code from libssh to server; bz #1225
      patch from simon AT sxw.org.uk; ok markus@ dtucker@
+   - djm@cvs.openbsd.org 2007/06/12 08:24:20
+     [scp.c]
+     make scp try to skip FIFOs rather than blocking when nothing is listening.
+     depends on the platform supporting sane O_NONBLOCK semantics for open
+     on FIFOs (apparently POSIX does not mandate this), which OpenBSD does.
+     bz #856; report by cjwatson AT debian.org; ok markus@
 
 20070611
  - (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit
diff --git a/scp.c b/scp.c
index a52aaeb12fc5acdb3dfee0c75531dd7140045364..087e64a424d4bb6fbd70fa3e268727dcff06cac9 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: scp.c,v 1.156 2007/01/22 13:06:21 djm Exp $ */
+/* $OpenBSD: scp.c,v 1.157 2007/06/12 08:24:20 djm Exp $ */
 /*
  * scp - secure remote copy.  This is basically patched BSD rcp which
  * uses ssh to do the data transfer (instead of using rcmd).
@@ -596,12 +596,13 @@ source(int argc, char **argv)
                            name);
                        goto next;
                }
-               if ((fd = open(name, O_RDONLY, 0)) < 0)
+               if ((fd = open(name, O_RDONLY|O_NONBLOCK, 0)) < 0)
                        goto syserr;
                if (fstat(fd, &stb) < 0) {
 syserr:                        run_err("%s: %s", name, strerror(errno));
                        goto next;
                }
+               unset_nonblock(fd);
                switch (stb.st_mode & S_IFMT) {
                case S_IFREG:
                        break;
This page took 0.831017 seconds and 5 git commands to generate.