From 6c33c1eb241f83e2439d56e625106778d0a6753f Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Sat, 12 Jan 2013 10:46:56 -0600 Subject: [PATCH] Make sure we are only sending ascii characters in POST requests to avoid urllib2 encoding errors, and add the missed post var in the POST data --- speedtest-cli | 4 +++- speedtest-cli-3 | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/speedtest-cli b/speedtest-cli index b9de6a4..6481b35 100755 --- a/speedtest-cli +++ b/speedtest-cli @@ -107,7 +107,9 @@ def downloadSpeed(files): class FilePutter(threading.Thread): def __init__(self, url, start, size): self.url = url - self.data = os.urandom(int(size)-len('content1=')) + data = os.urandom(int(size)).encode('hex') + self.data = 'content1=%s' % data[0:int(size)-9] + del data self.result = None self.starttime = start threading.Thread.__init__(self) diff --git a/speedtest-cli-3 b/speedtest-cli-3 index f90312d..ab8eb48 100755 --- a/speedtest-cli-3 +++ b/speedtest-cli-3 @@ -25,6 +25,7 @@ import os import sys import hashlib import threading +import binascii from queue import Queue @@ -103,7 +104,9 @@ def downloadSpeed(files): class FilePutter(threading.Thread): def __init__(self, url, start, size): self.url = url - self.data = os.urandom(int(size)-len('content1=')) + data = binascii.hexlify(os.urandom(int(size)-9)).decode() + self.data = 'content1=%s' % data[0:int(size)-9] + del data self.result = None self.starttime = start threading.Thread.__init__(self) @@ -114,7 +117,7 @@ class FilePutter(threading.Thread): def run(self): try: if (time.time() - self.starttime) <= 10: - f = urllib.request.urlopen(self.url, self.data) + f = urllib.request.urlopen(self.url, self.data.encode()) contents = f.read() f.close() self.result = self.data