message: Fix the last error code with upgrade failed in async http client.
diff: @@ -210,7 +210,7 @@ static int http_client_execute(zval *zobject, char *uri, zend_size_t uri_len, zv
  }
  efree(func_name);
  - // clear all properties about the last response when new request
  + // when new request, clear all properties about the last response
  http_client_clear_response_properties(zobject TSRMLS_CC);
  http_client *http = swoole_get_object(zobject);
  @@ -626,6 +626,20 @@ static void http_client_onRequestTimeout(swTimer *timer, swTimer_node *tnode)
  }
  hcc->error_flag |= HTTP_CLIENT_EFLAG_TIMEOUT;
  + if (cli->buffer && cli->buffer->length > 0) // received something bug not complete
  + {
  + zval *headers = php_swoole_read_init_property(swoole_http_client_class_entry_ptr, zobject, ZEND_STRL("requestHeaders") TSRMLS_CC);
  + zval *value;
  + if (php_swoole_array_get_value(Z_ARRVAL_P(headers), "Connection", value))
  + {
  + convert_to_string(value);
  + if (strcmp(Z_STRVAL_P(value), "Upgrade") == 0) // is upgrade
  + {
  + hcc->error_flag |= HTTP_CLIENT_EFLAG_UPGRADE;
  + }
  + }
  + }
  +
  zval *retval = NULL;
  sw_zend_call_method_with_0_params(&zobject, swoole_http_client_class_entry_ptr, NULL, "close", &retval);
  if (retval)
  @@ -2170,17 +2184,20 @@ static PHP_METHOD(swoole_http_client, push)
  http_client *http = swoole_get_object(getThis());
  if (!(http && http->cli && http->cli->socket))
  {
  - swoole_php_error(E_WARNING, "not connected to the server");
  - SwooleG.error = SW_ERROR_WEBSOCKET_UNCONNECTED;
  - RETURN_FALSE;
  - }
  -
  - if (!http->upgrade)
  + http_client_property *hcc = swoole_get_property(getThis(), 0);
  + if (hcc->error_flag & HTTP_CLIENT_EFLAG_UPGRADE)
  {
  swoole_php_fatal_error(E_WARNING, "websocket handshake failed, cannot push data.");
  SwooleG.error = SW_ERROR_WEBSOCKET_HANDSHAKE_FAILED;
  RETURN_FALSE;
  }
  + else
  + {
  + swoole_php_error(E_WARNING, "not connected to the server");
  + SwooleG.error = SW_ERROR_WEBSOCKET_UNCONNECTED;
  + RETURN_FALSE;
  + }
  + }
  swString_clear(http_client_buffer);
  swWebSocket_encode(http_client_buffer, data, length, opcode, (int) fin, http->websocket_mask);
  