message: fix http_client_coro http->timer double free.
diff: @@ -254,6 +254,10 @@ static void http_client_coro_onTimeout(swTimer *timer, swTimer_node *tnode)
  zval *zobject = &_zobject;
  #endif
  + http_client *http = swoole_get_object(zobject);
  + http->timer = NULL;
  + http->state = HTTP_CLIENT_STATE_WAIT_CLOSE;
  +
  //define time out RETURN ERROR 110
  zend_update_property_long(swoole_http_client_coro_class_entry_ptr, zobject, ZEND_STRL("errCode"), ETIMEDOUT TSRMLS_CC);
  @@ -265,9 +269,6 @@ static void http_client_coro_onTimeout(swTimer *timer, swTimer_node *tnode)
  goto free_zdata;
  }
  - http_client *http = swoole_get_object(zobject);
  - http->timer = NULL;
  -
  hcc->defer_status = HTTP_CLIENT_STATE_DEFER_INIT;
  int ret = coro_resume(ctx, zdata, &retval);
  if (ret > 0)
  @@ -379,6 +380,9 @@ static void http_client_coro_onError(swClient *cli)
  php_context *sw_current_context = swoole_get_property(zobject, 1);
  zend_update_property_long(swoole_http_client_coro_class_entry_ptr, zobject, ZEND_STRL("errCode"), SwooleG.error TSRMLS_CC);
  + http_client *http = swoole_get_object(zobject);
  + http->timer = NULL;
  +
  http_client_property *hcc = swoole_get_property(zobject, 0);
  if (hcc->defer && hcc->defer_status != HTTP_CLIENT_STATE_DEFER_WAIT)
  {
  @@ -424,7 +428,13 @@ static void http_client_coro_onReceive(swClient *cli, char *data, uint32_t lengt
  if (parsed_n < 0)
  {
  - ZVAL_BOOL(zdata, 0); //return false
  + //return false
  + ZVAL_BOOL(zdata, 0);
  + if (http->timer)
  + {
  + swTimer_del(&SwooleG.timer, http->timer);
  + http->timer = NULL;
  + }
  if (hcc->defer && hcc->defer_status != HTTP_CLIENT_STATE_DEFER_WAIT)
  {
  //not recv yet sava data
  @@ -442,10 +452,19 @@ static void http_client_coro_onReceive(swClient *cli, char *data, uint32_t lengt
  return;
  }
  -// if(!hcc->defer_chunk_status){ //not recv all wait for next
  +// if (!hcc->defer_chunk_status)
  +// {
  +// //not recv all wait for next
  // return;
  // }
  + //timeout
  + if (http->timer)
  + {
  + swTimer_del(&SwooleG.timer, http->timer);
  + http->timer = NULL;
  + }
  +
  ZVAL_BOOL(zdata, 1); //return false
  if (hcc->defer && hcc->defer_status != HTTP_CLIENT_STATE_DEFER_WAIT)
  {
  @@ -455,13 +474,6 @@ static void http_client_coro_onReceive(swClient *cli, char *data, uint32_t lengt
  goto free_zdata;
  }
  - //timeout
  - if (http->timer)
  - {
  - swTimer_del(&SwooleG.timer, http->timer);
  - http->timer = NULL;
  - }
  -
  begin_resume:
  {
  //if should resume
  @@ -1016,7 +1028,6 @@ static PHP_METHOD(swoole_http_client_coro, recv)
  RETURN_FALSE;
  }
  -
  switch (hcc->defer_status)
  {
  case HTTP_CLIENT_STATE_DEFER_DONE:
  