From: Zooko O'Whielacronx Date: Fri, 17 Aug 2007 21:59:49 +0000 (-0700) Subject: command-line: fix ticket #111 by requiring input to be a local file and sending Conte... X-Git-Url: https://git.rkrishnan.org/?a=commitdiff_plain;h=9996836d239601b18496caebb3d8f46b530a596c;p=tahoe-lafs%2Ftahoe-lafs.git command-line: fix ticket #111 by requiring input to be a local file and sending Content-Length header --- 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)