summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2007-06-12 23:41:06 +1000
committerDarren Tucker <dtucker@zip.com.au>2007-06-12 23:41:06 +1000
commit43ce902449abc553e570af717a5eafe689150381 (patch)
tree92358863a48a813de93e392b79d3902b7064d7b7
parent8f6d0ed60eb0d790564a5f47ba63c9bc3c734058 (diff)
- 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@
-rw-r--r--ChangeLog8
-rw-r--r--scp.c5
2 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index fbffcd83b..b25d87490 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,12 @@
12 [ssh-gss.h gss-serv.c gss-genr.c] 12 [ssh-gss.h gss-serv.c gss-genr.c]
13 relocate server-only GSSAPI code from libssh to server; bz #1225 13 relocate server-only GSSAPI code from libssh to server; bz #1225
14 patch from simon AT sxw.org.uk; ok markus@ dtucker@ 14 patch from simon AT sxw.org.uk; ok markus@ dtucker@
15 - djm@cvs.openbsd.org 2007/06/12 08:24:20
16 [scp.c]
17 make scp try to skip FIFOs rather than blocking when nothing is listening.
18 depends on the platform supporting sane O_NONBLOCK semantics for open
19 on FIFOs (apparently POSIX does not mandate this), which OpenBSD does.
20 bz #856; report by cjwatson AT debian.org; ok markus@
15 21
1620070611 2220070611
17 - (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit 23 - (djm) Bugzilla #1306: silence spurious error messages from hang-on-exit
@@ -3026,4 +3032,4 @@
3026 OpenServer 6 and add osr5bigcrypt support so when someone migrates 3032 OpenServer 6 and add osr5bigcrypt support so when someone migrates
3027 passwords between UnixWare and OpenServer they will still work. OK dtucker@ 3033 passwords between UnixWare and OpenServer they will still work. OK dtucker@
3028 3034
3029$Id: ChangeLog,v 1.4691 2007/06/12 13:40:39 dtucker Exp $ 3035$Id: ChangeLog,v 1.4692 2007/06/12 13:41:06 dtucker Exp $
diff --git a/scp.c b/scp.c
index a52aaeb12..087e64a42 100644
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: scp.c,v 1.156 2007/01/22 13:06:21 djm Exp $ */ 1/* $OpenBSD: scp.c,v 1.157 2007/06/12 08:24:20 djm Exp $ */
2/* 2/*
3 * scp - secure remote copy. This is basically patched BSD rcp which 3 * scp - secure remote copy. This is basically patched BSD rcp which
4 * uses ssh to do the data transfer (instead of using rcmd). 4 * uses ssh to do the data transfer (instead of using rcmd).
@@ -596,12 +596,13 @@ source(int argc, char **argv)
596 name); 596 name);
597 goto next; 597 goto next;
598 } 598 }
599 if ((fd = open(name, O_RDONLY, 0)) < 0) 599 if ((fd = open(name, O_RDONLY|O_NONBLOCK, 0)) < 0)
600 goto syserr; 600 goto syserr;
601 if (fstat(fd, &stb) < 0) { 601 if (fstat(fd, &stb) < 0) {
602syserr: run_err("%s: %s", name, strerror(errno)); 602syserr: run_err("%s: %s", name, strerror(errno));
603 goto next; 603 goto next;
604 } 604 }
605 unset_nonblock(fd);
605 switch (stb.st_mode & S_IFMT) { 606 switch (stb.st_mode & S_IFMT) {
606 case S_IFREG: 607 case S_IFREG:
607 break; 608 break;