diff -ur a/oauth/lib/OAuth.php b/oauth/lib/OAuth.php
--- a/oauth/lib/OAuth.php	2011-10-24 22:46:56.000000000 -0700
+++ b/oauth/lib/OAuth.php	2011-11-12 13:50:28.332028723 -0800
@@ -228,7 +228,14 @@
 
   function __construct($http_method, $http_url, $parameters=NULL) {
     $parameters = ($parameters) ? $parameters : array();
-    $parameters = array_merge( OAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);
+    $parts = parse_url($http_url, PHP_URL_QUERY);
+    if (isset($parts['host']) && isset($parts['port'])) {
+      $doubleport = strpos($parts['host'], ':'.$parts['port']);
+      if ($doubleport > 0) {
+	$parts['host'] = substr($parts['host'], $qq);
+      }
+    }
+    $parameters = array_merge( OAuthUtil::parse_parameters($parts), $parameters);
     $this->parameters = $parameters;
     $this->http_method = $http_method;
     $this->http_url = $http_url;
@@ -388,7 +395,9 @@
 
     if (($scheme == 'https' && $port != '443')
         || ($scheme == 'http' && $port != '80')) {
-      $host = "$host:$port";
+      if (!strpos($host, ':'.$port)) {
+	$host = "$host:$port";
+      }
     }
     return "$scheme://$host$path";
   }
diff -ur a/oauth/oauth_common.inc b/oauth/oauth_common.inc
--- a/oauth/oauth_common.inc	2011-10-24 22:46:56.000000000 -0700
+++ b/oauth/oauth_common.inc	2011-11-12 13:45:44.736992832 -0800
@@ -93,5 +93,7 @@
     if ($sha1 !== base64_decode($body_hash)) {
       throw new OAuthException("Invalid body hash");
     }
+  } else {
+    watchdog('oauth', 'OAuth requires inputstream when POST messages are signed', WATCHDOG_DEBUG);
   }
 }
