From 9996836d239601b18496caebb3d8f46b530a596c Mon Sep 17 00:00:00 2001 From: Zooko O'Whielacronx Date: Fri, 17 Aug 2007 14:59:49 -0700 Subject: [PATCH] command-line: fix ticket #111 by requiring input to be a local file and sending Content-Length header --- src/allmydata/scripts/cli.py | 4 ++-- src/allmydata/scripts/tahoe_put.py | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/allmydata/scripts/cli.py b/src/allmydata/scripts/cli.py index ee70055f..3487e752 100644 --- a/src/allmydata/scripts/cli.py +++ b/src/allmydata/scripts/cli.py @@ -45,8 +45,8 @@ class PutOptions(VDriveOptions): return "%s put LOCAL_FILE VDRIVE_FILE" % (os.path.basename(sys.argv[0]),) longdesc = """Put a file into the virtual drive (copying the file's - contents from the local filesystem). If LOCAL_FILE is omitted or '-', the - contents of the file will be read from stdin.""" + contents from the local filesystem). LOCAL_FILE is required to be a + local file (it can't be stdin).""" class RmOptions(VDriveOptions): def parseArgs(self, vdrive_pathname): diff --git a/src/allmydata/scripts/tahoe_put.py b/src/allmydata/scripts/tahoe_put.py index 4b548004..df58229c 100644 --- a/src/allmydata/scripts/tahoe_put.py +++ b/src/allmydata/scripts/tahoe_put.py @@ -18,16 +18,16 @@ def put(nodeurl, vdrive, local_fname, vdrive_fname, verbosity): if vdrive_fname: url += vdrive_fname - if local_fname is None or local_fname == "-": - infileobj = sys.stdin - else: - infileobj = open(local_fname, "rb") + infileobj = open(local_fname, "rb") + infileobj.seek(0, 2) + infilelen = infileobj.tell() + infileobj.seek(0, 0) so = socket.socket() so.connect((host, port,)) CHUNKSIZE=2**16 - data = "PUT %s HTTP/1.1\r\nConnection: close\r\nHostname: %s\r\n\r\n" % (url, host,) + data = "PUT %s HTTP/1.1\r\nConnection: close\r\nContent-Length: %s\r\nHostname: %s\r\n\r\n" % (url, infilelen, host,) while data: try: sent = so.send(data) -- 2.45.2