--- toast	2010/03/02 05:27:56	1.479
+++ toast	2010/04/04 18:22:09	1.480
@@ -941,15 +941,21 @@
 sub tcpconnect(*$$;$)
 {
   local(*HANDLE) = shift;
-  my($host, $port, $ip) = @_;
-  $ip = gethostbyname($host) || error("gethostbyname $host: $!")
-      unless defined($ip);
-  socket(HANDLE, 2, 1, 0) || error("$!");
+  my($host, $port, $iaddr) = @_;
+  $iaddr = gethostbyname($host) || error("gethostbyname $host: $!")
+      unless defined($iaddr);
+  my($pf, $type, $proto, $paddr) = (2, 1, 0, pack("Sna4x8", 2, $port, $iaddr));
+  eval q{
+    use Socket;
+    $paddr = sockaddr_in($port, $iaddr);
+    ($pf, $type) = (PF_INET, SOCK_STREAM);
+    $proto = getprotobyname("tcp");
+  };
+  socket(HANDLE, $pf, $type, $proto) || error("$!");
   binmode(HANDLE) || error("binmode: $!"); # perl 5.8.0 utf8 bug
-  connect(HANDLE, pack("Sna4x8", 2, $port, $ip)) ||
-      error("connect $host:$port: $!");
+  connect(HANDLE, $paddr) || error("connect $host:$port: $!");
   unbuffer(HANDLE);
-  return $ip;
+  return $iaddr;
 }
 
 sub openhttp(*$;$;$;$;$)
@@ -976,7 +982,7 @@
   my($request) = "$method $path HTTP/1.0\r\nHost: $hdrhost\r\n".
       "User-Agent: $uagent\r\nAccept: */*\r\n$clen\r\n$body";
   tcpconnect(*HANDLE, $host, $port);
-  print HANDLE $request || error("write to $host:$port: $!");
+  print HANDLE $request or error("write to $host:$port: $!");
 }
 
 sub httphead($)