After Upgrading from Beta 6 to RC1, Drupal is now giving this error in the admin control panel. "HTTP request status Fails"

Due to this OpenID and Feed Aggretation are no longer functional in RC1.

I don't know enough to look at the code, but I wanted to report this error.

Comments

MasterSushi’s picture

Status: Active » Closed (fixed)

This ended up being an issue with my webhost, and not with Drupal, that occurred at the same time as my upgrade to RC1.

kiakanpa’s picture

could you please explain the problem as i am getting this issue too. I am unaware of any changes with my webhost.

aniruddhamallik’s picture

yeah.. same problem for me too... any ideas?

thememex’s picture

Any of you behind a firewall or proxy?

dana_johnson’s picture

I am having this same issue, the site is behind a firewall. Any pointers would be appreciated!

thememex’s picture

Please see the following post: Get me past my proxy server (http://drupal.org/node/7881).

This is an issue in the Drupal core (drupal_http_request - common.inc). Now that Update Status is a part of core, and recommended to by on by default, a lot more folks are finding themselves with this issue if they are behind a corporate or web host proxy/firewall. Any outbound request for module/core updates, RSS feeds, OpenID authentication, etc will be blocked by the proxy/firewall. And there's currently no where to specify a proxy.

With Update Status in particular, every single admin page will call this function to check for updates. This is by design and works great when you have direct connectivity. Without direct connectivity, you'll notice a 10-15 second lag on every single admin page load. And that can be (very) annoying.

dana_johnson’s picture

I made a hack which works for me now, maybe this info would help others...

My site is within my company's intranet. Our proxy server is configured such that I need to send request to it only for locations outside the firewall, that is, internal paths will not be routed. So I hacked in a crude test for intranet versus internet paths in drupal_http_request(). Here are some snippets:

  switch ($uri['scheme']) {
    case 'http':
      $port = isset($uri['port']) ? $uri['port'] : 80;
      $host = $uri['host'] . ($port != 80 ? ':'. $port : '');

      if (isMyCompanyDomain($uri['host']) == 0)
      {
        $proxy_server = 'web-proxy.myCompany.com';
        $proxy_port =  8088;
        $fp = @fsockopen($proxy_server, $proxy_port, $errno, $errstr, 15);
      }
      else {
        $fp = @fsockopen($uri['host'], $port, $errno, $errstr, 15);
      }
      break;

The function I added:

/**
 * Tests to see if the uri is in myCompany domain
 */
function isMyCompanyDomain($uri)
{
  $qualifiedName = explode(".", $uri);
  $nFields = count($qualifiedName);

  if ($nFields >= 2)
  {
    if ((strcasecmp($qualifiedName[$nFields - 2], "myCompany") == 0) &&
      (strcasecmp($qualifiedName[$nFields - 1], "com") == 0))
    {
      return 1;
    }
    else
    {
      return 0;
    }
  }
  else
  {
    // A case not well handled, just let it fail for now
    return 1;
  }
}

The proper solution would be to define "no proxy" domains and test for those before routing the request to the proxy server.