瀏覽代碼

1. improve: asyncWithChan avoid panic of "write on closed channel"
2. improve: asyncWithChan support select case usage
3. bug fix: repeated signature nonce while retry
4. bug fix: calling request.GetUrl() ahead of client.DoAction() will cause problems

Signed-off-by: gaort <rutong.grt@alibaba-inc.com>

gaort 7 年之前
父節點
當前提交
237a1b8730
共有 100 個文件被更改,包括 627 次插入217 次删除
  1. 6 0
      ChangeLog.txt
  2. 2 2
      integration/ecs_test.go
  3. 2 2
      integration/rds_test.go
  4. 1 1
      integration/utils.go
  5. 4 0
      sdk/auth/rpc_signature_composer.go
  6. 1 1
      sdk/auth/signers/algorithms.go
  7. 54 25
      sdk/client.go
  8. 6 2
      services/alidns/add_batch_domain_records.go
  9. 6 2
      services/alidns/add_domain.go
  10. 6 2
      services/alidns/add_domain_group.go
  11. 6 2
      services/alidns/add_domain_record.go
  12. 6 2
      services/alidns/apply_for_retrieval_domain_name.go
  13. 6 2
      services/alidns/change_domain_group.go
  14. 6 2
      services/alidns/change_domain_of_dns_product.go
  15. 6 2
      services/alidns/check_domain_record.go
  16. 6 2
      services/alidns/delete_batch_domain_records.go
  17. 6 2
      services/alidns/delete_batch_domains.go
  18. 6 2
      services/alidns/delete_domain.go
  19. 6 2
      services/alidns/delete_domain_group.go
  20. 6 2
      services/alidns/delete_domain_record.go
  21. 6 2
      services/alidns/delete_sub_domain_records.go
  22. 6 2
      services/alidns/describe_batch_result.go
  23. 6 2
      services/alidns/describe_dns_product_instance.go
  24. 6 2
      services/alidns/describe_dns_product_instances.go
  25. 6 2
      services/alidns/describe_dnsslb_sub_domains.go
  26. 6 2
      services/alidns/describe_domain_groups.go
  27. 6 2
      services/alidns/describe_domain_info.go
  28. 6 2
      services/alidns/describe_domain_logs.go
  29. 6 2
      services/alidns/describe_domain_ns.go
  30. 6 2
      services/alidns/describe_domain_record_info.go
  31. 6 2
      services/alidns/describe_domain_records.go
  32. 6 2
      services/alidns/describe_domain_whois_info.go
  33. 6 2
      services/alidns/describe_domains.go
  34. 6 2
      services/alidns/describe_record_logs.go
  35. 6 2
      services/alidns/describe_sub_domain_records.go
  36. 6 2
      services/alidns/describe_support_lines.go
  37. 6 2
      services/alidns/get_main_domain_name.go
  38. 6 2
      services/alidns/modify_hichina_domain_dns.go
  39. 6 2
      services/alidns/retrieval_domain_name.go
  40. 6 2
      services/alidns/set_dnsslb_status.go
  41. 6 2
      services/alidns/set_domain_record_status.go
  42. 6 2
      services/alidns/update_batch_domain_records.go
  43. 6 2
      services/alidns/update_dnsslb_weight.go
  44. 6 2
      services/alidns/update_domain_group.go
  45. 6 2
      services/alidns/update_domain_record.go
  46. 5 2
      services/arms/arms_query_data_set.go
  47. 6 2
      services/arms/where_in_dim_query.go
  48. 6 2
      services/arms4finance/arms_query_data_set.go
  49. 6 2
      services/arms4finance/where_in_dim_query.go
  50. 6 2
      services/ccc/add_phone_number.go
  51. 6 2
      services/ccc/assign_users.go
  52. 6 2
      services/ccc/create_skill_group.go
  53. 6 2
      services/ccc/create_user.go
  54. 6 2
      services/ccc/delete_skill_group.go
  55. 6 2
      services/ccc/download_recording.go
  56. 6 2
      services/ccc/get_config.go
  57. 6 2
      services/ccc/get_service_extensions.go
  58. 6 2
      services/ccc/get_user.go
  59. 6 2
      services/ccc/list_call_detail_records.go
  60. 6 2
      services/ccc/list_contact_flows.go
  61. 6 2
      services/ccc/list_phone_numbers.go
  62. 6 2
      services/ccc/list_recordings.go
  63. 6 2
      services/ccc/list_roles.go
  64. 6 2
      services/ccc/list_skill_groups.go
  65. 6 2
      services/ccc/list_skill_groups_of_user.go
  66. 6 2
      services/ccc/list_users.go
  67. 6 2
      services/ccc/list_users_of_skill_group.go
  68. 6 2
      services/ccc/modify_phone_number.go
  69. 6 2
      services/ccc/modify_skill_group.go
  70. 6 2
      services/ccc/modify_user.go
  71. 6 2
      services/ccc/refresh_token.go
  72. 6 2
      services/ccc/remove_phone_number.go
  73. 6 2
      services/ccc/remove_users.go
  74. 6 2
      services/ccc/request_login_info.go
  75. 6 2
      services/cdn/add_cdn_domain.go
  76. 6 2
      services/cdn/add_live_app_record_config.go
  77. 6 2
      services/cdn/add_live_app_snapshot_config.go
  78. 6 2
      services/cdn/add_live_domain_mapping.go
  79. 6 2
      services/cdn/add_live_pull_stream_info.go
  80. 6 2
      services/cdn/add_live_stream_transcode.go
  81. 6 2
      services/cdn/batch_describe_domain_bps_data.go
  82. 6 2
      services/cdn/clear_user_black_list.go
  83. 6 2
      services/cdn/clear_user_domain_black_list.go
  84. 6 2
      services/cdn/create_live_stream_record_index_files.go
  85. 6 2
      services/cdn/delete_cdn_domain.go
  86. 6 2
      services/cdn/delete_http_header_config.go
  87. 6 2
      services/cdn/delete_live_app_record_config.go
  88. 6 2
      services/cdn/delete_live_app_snapshot_config.go
  89. 6 2
      services/cdn/delete_live_domain_mapping.go
  90. 6 2
      services/cdn/delete_live_pull_stream_info.go
  91. 6 2
      services/cdn/delete_live_stream_transcode.go
  92. 6 2
      services/cdn/describe_cdn_domain_base_detail.go
  93. 6 2
      services/cdn/describe_cdn_domain_detail.go
  94. 6 2
      services/cdn/describe_cdn_domain_logs.go
  95. 6 2
      services/cdn/describe_cdn_monitor_data.go
  96. 6 2
      services/cdn/describe_cdn_region_and_isp.go
  97. 6 2
      services/cdn/describe_cdn_service.go
  98. 6 2
      services/cdn/describe_cdn_types.go
  99. 6 2
      services/cdn/describe_domain_average_response_time.go
  100. 6 2
      services/cdn/describe_domain_bps_data.go

+ 6 - 0
ChangeLog.txt

@@ -1,3 +1,9 @@
+2018-01-24 Version: 0.8.3
+1. improve: asyncWithChan avoid panic of "write on closed channel"
+2. improve: asyncWithChan support select case usage
+3. bug fix: repeated signature nonce while retry
+4. bug fix: calling request.GetUrl() ahead of client.DoAction() will cause problems
+
 2018-01-18 Version: 0.8.2
 2018-01-18 Version: 0.8.2
 1. Set default timeout to 10s
 1. Set default timeout to 10s
 2. Make integration tests more stable
 2. Make integration tests more stable

+ 2 - 2
integration/ecs_test.go

@@ -131,9 +131,9 @@ func deleteAllTestEcsInstance(t *testing.T, client *ecs.Client) {
 			createTime, err := strconv.ParseInt(instanceInfo.InstanceName[26:len(instanceInfo.InstanceName)], 10, 64)
 			createTime, err := strconv.ParseInt(instanceInfo.InstanceName[26:len(instanceInfo.InstanceName)], 10, 64)
 			assertErrorNil(t, err, "Parse instance create time failed: "+instanceInfo.InstanceName)
 			assertErrorNil(t, err, "Parse instance create time failed: "+instanceInfo.InstanceName)
 			if (time.Now().Unix() - createTime) < (60 * 60) {
 			if (time.Now().Unix() - createTime) < (60 * 60) {
-				fmt.Printf("found undeleted ecs instance(%s) but created in 60 minutes, try to delete next time\n",instanceInfo.InstanceName)
+				fmt.Printf("found undeleted ecs instance(%s) but created in 60 minutes, try to delete next time\n", instanceInfo.InstanceName)
 				return
 				return
-			}else{
+			} else {
 				fmt.Printf("found undeleted ecs instance(%s), status=%s, try to delete it.\n",
 				fmt.Printf("found undeleted ecs instance(%s), status=%s, try to delete it.\n",
 					instanceInfo.Status, instanceInfo.InstanceId)
 					instanceInfo.Status, instanceInfo.InstanceId)
 				if instanceInfo.Status == EcsInstanceStatusRunning {
 				if instanceInfo.Status == EcsInstanceStatusRunning {

+ 2 - 2
integration/rds_test.go

@@ -2,14 +2,14 @@ package integration
 
 
 import (
 import (
 	"fmt"
 	"fmt"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
 	"github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/assert"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"testing"
 	"testing"
 	"time"
 	"time"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
 )
 )
 
 
 const (
 const (

+ 1 - 1
integration/utils.go

@@ -43,4 +43,4 @@ func assertErrorNil(t *testing.T, err error, message string) {
 	if err != nil {
 	if err != nil {
 		fmt.Fprintf(os.Stderr, message+": %v\n", err)
 		fmt.Fprintf(os.Stderr, message+": %v\n", err)
 	}
 	}
-}
+}

+ 4 - 0
sdk/auth/rpc_signature_composer.go

@@ -24,6 +24,10 @@ import (
 
 
 func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) {
 func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) {
 	completeRpcSignParams(request, signer, regionId)
 	completeRpcSignParams(request, signer, regionId)
+	// remove while retry
+	if _, containsSign := request.GetQueryParams()["Signature"]; containsSign {
+		delete(request.GetQueryParams(), "Signature")
+	}
 	stringToSign := buildRpcStringToSign(request)
 	stringToSign := buildRpcStringToSign(request)
 	signature := signer.Sign(stringToSign, "&")
 	signature := signer.Sign(stringToSign, "&")
 	request.GetQueryParams()["Signature"] = signature
 	request.GetQueryParams()["Signature"] = signature

+ 1 - 1
sdk/auth/signers/algorithms.go

@@ -58,6 +58,6 @@ func Sha256WithRsa(source, secret string) string {
 	}
 	}
 
 
 	signedString := base64.StdEncoding.EncodeToString(signature)
 	signedString := base64.StdEncoding.EncodeToString(signature)
-	fmt.Printf("Encoded: %v\n", signedString)
+	//fmt.Printf("Encoded: %v\n", signedString)
 	return signedString
 	return signedString
 }
 }

+ 54 - 25
sdk/client.go

@@ -15,6 +15,7 @@
 package sdk
 package sdk
 
 
 import (
 import (
+	"fmt"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
@@ -23,8 +24,8 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 	"net"
 	"net"
 	"net/http"
 	"net/http"
-	"fmt"
 	"strconv"
 	"strconv"
+	"sync"
 )
 )
 
 
 // this value will be replaced while build: -ldflags="-X sdk.version=x.x.x"
 // this value will be replaced while build: -ldflags="-X sdk.version=x.x.x"
@@ -39,6 +40,8 @@ type Client struct {
 
 
 	debug     bool
 	debug     bool
 	isRunning bool
 	isRunning bool
+	// void "panic(write to close channel)" cause of addAsync() after Shutdown()
+	asyncChanLock *sync.RWMutex
 }
 }
 
 
 func (client *Client) Init() (err error) {
 func (client *Client) Init() (err error) {
@@ -47,6 +50,7 @@ func (client *Client) Init() (err error) {
 
 
 func (client *Client) InitWithOptions(regionId string, config *Config, credential auth.Credential) (err error) {
 func (client *Client) InitWithOptions(regionId string, config *Config, credential auth.Credential) (err error) {
 	client.isRunning = true
 	client.isRunning = true
+	client.asyncChanLock = new(sync.RWMutex)
 	client.regionId = regionId
 	client.regionId = regionId
 	client.config = config
 	client.config = config
 	if err != nil {
 	if err != nil {
@@ -77,8 +81,10 @@ func (client *Client) EnableAsync(routinePoolSize, maxTaskQueueSize int) {
 		go func() {
 		go func() {
 			for client.isRunning {
 			for client.isRunning {
 				select {
 				select {
-				case task := <-client.asyncTaskQueue:
-					task()
+				case task, notClosed := <-client.asyncTaskQueue:
+					if notClosed {
+						task()
+					}
 				}
 				}
 			}
 			}
 		}()
 		}()
@@ -136,7 +142,7 @@ func (client *Client) InitWithStsRoleNameOnEcs(regionId, roleName string) (err e
 func (client *Client) InitClientConfig() (config *Config) {
 func (client *Client) InitClientConfig() (config *Config) {
 	if client.config != nil {
 	if client.config != nil {
 		return client.config
 		return client.config
-	}else{
+	} else {
 		return NewConfig()
 		return NewConfig()
 	}
 	}
 }
 }
@@ -177,26 +183,16 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 	}
 	}
 
 
 	// signature
 	// signature
+	var finalSigner auth.Signer
 	if signer != nil {
 	if signer != nil {
-		err = auth.Sign(request, signer, regionId)
+		finalSigner = signer
 	} else {
 	} else {
-		err = auth.Sign(request, client.signer, regionId)
+		finalSigner = client.signer
 	}
 	}
-
+	httpRequest, err := buildHttpRequest(request, finalSigner, regionId)
 	if err != nil {
 	if err != nil {
 		return
 		return
 	}
 	}
-
-	requestMethod := request.GetMethod()
-	requestUrl := request.BuildUrl()
-	body := request.GetBodyReader()
-	httpRequest, err := http.NewRequest(requestMethod, requestUrl, body)
-	if err != nil {
-		return
-	}
-	for key, value := range request.GetHeaders() {
-		httpRequest.Header[key] = []string{value}
-	}
 	var httpResponse *http.Response
 	var httpResponse *http.Response
 	for retryTimes := 0; retryTimes <= client.config.MaxRetryTime; retryTimes++ {
 	for retryTimes := 0; retryTimes <= client.config.MaxRetryTime; retryTimes++ {
 		httpResponse, err = client.httpClient.Do(httpRequest)
 		httpResponse, err = client.httpClient.Do(httpRequest)
@@ -209,7 +205,7 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 				return
 				return
 			} else if retryTimes >= client.config.MaxRetryTime {
 			} else if retryTimes >= client.config.MaxRetryTime {
 				// timeout but reached the max retry times, return
 				// timeout but reached the max retry times, return
-				timeoutErrorMsg := fmt.Sprintf(errors.TimeoutErrorMessage, strconv.Itoa(retryTimes + 1), strconv.Itoa(retryTimes + 1))
+				timeoutErrorMsg := fmt.Sprintf(errors.TimeoutErrorMessage, strconv.Itoa(retryTimes+1), strconv.Itoa(retryTimes+1))
 				err = errors.NewClientError(errors.TimeoutErrorCode, timeoutErrorMsg, err)
 				err = errors.NewClientError(errors.TimeoutErrorCode, timeoutErrorMsg, err)
 				return
 				return
 			}
 			}
@@ -217,10 +213,9 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 		//  if status code >= 500 or timeout, will trigger retry
 		//  if status code >= 500 or timeout, will trigger retry
 		if client.config.AutoRetry && (timeout || isServerError(httpResponse)) {
 		if client.config.AutoRetry && (timeout || isServerError(httpResponse)) {
 			// rewrite signatureNonce and signature
 			// rewrite signatureNonce and signature
-			if signer != nil {
-				err = auth.Sign(request, signer, regionId)
-			} else {
-				err = auth.Sign(request, client.signer, regionId)
+			httpRequest, err = buildHttpRequest(request, finalSigner, regionId)
+			if err != nil {
+				return
 			}
 			}
 			continue
 			continue
 		}
 		}
@@ -230,6 +225,28 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 	return
 	return
 }
 }
 
 
+func buildHttpRequest(request requests.AcsRequest, singer auth.Signer, regionId string) (httpRequest *http.Request, err error) {
+	err = auth.Sign(request, singer, regionId)
+	if err != nil {
+		return
+	}
+	requestMethod := request.GetMethod()
+	requestUrl := request.BuildUrl()
+	body := request.GetBodyReader()
+	httpRequest, err = http.NewRequest(requestMethod, requestUrl, body)
+	if err != nil {
+		return
+	}
+	for key, value := range request.GetHeaders() {
+		httpRequest.Header[key] = []string{value}
+	}
+	// host is a special case
+	if host, containsHost := request.GetHeaders()["Host"]; containsHost {
+		httpRequest.Host = host
+	}
+	return
+}
+
 func isTimeout(err error) bool {
 func isTimeout(err error) bool {
 	if err == nil {
 	if err == nil {
 		return false
 		return false
@@ -242,9 +259,18 @@ func isServerError(httpResponse *http.Response) bool {
 	return httpResponse.StatusCode >= http.StatusInternalServerError
 	return httpResponse.StatusCode >= http.StatusInternalServerError
 }
 }
 
 
+/**
+only block when any one of the following occurs:
+1. the asyncTaskQueue is full, increase the queue size to avoid this
+2. Shutdown() in progressing, the client is being closed
+**/
 func (client *Client) AddAsyncTask(task func()) (err error) {
 func (client *Client) AddAsyncTask(task func()) (err error) {
 	if client.asyncTaskQueue != nil {
 	if client.asyncTaskQueue != nil {
-		client.asyncTaskQueue <- task
+		client.asyncChanLock.RLock()
+		defer client.asyncChanLock.RUnlock()
+		if client.isRunning {
+			client.asyncTaskQueue <- task
+		}
 	} else {
 	} else {
 		err = errors.NewClientError(errors.AsyncFunctionNotEnabledCode, errors.AsyncFunctionNotEnabledMessage, nil)
 		err = errors.NewClientError(errors.AsyncFunctionNotEnabledCode, errors.AsyncFunctionNotEnabledMessage, nil)
 	}
 	}
@@ -313,6 +339,9 @@ func (client *Client) ProcessCommonRequestWithSigner(request *requests.CommonReq
 
 
 func (client *Client) Shutdown() {
 func (client *Client) Shutdown() {
 	client.signer.Shutdown()
 	client.signer.Shutdown()
-	close(client.asyncTaskQueue)
+	// lock the addAsync()
+	client.asyncChanLock.Lock()
+	defer client.asyncChanLock.Unlock()
 	client.isRunning = false
 	client.isRunning = false
+	close(client.asyncTaskQueue)
 }
 }

+ 6 - 2
services/alidns/add_batch_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) AddBatchDomainRecordsWithChan(request *AddBatchDomainRecor
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddBatchDomainRecords(request)
 		response, err := client.AddBatchDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/add_domain.go

@@ -33,8 +33,12 @@ func (client *Client) AddDomainWithChan(request *AddDomainRequest) (<-chan *AddD
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddDomain(request)
 		response, err := client.AddDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/add_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) AddDomainGroupWithChan(request *AddDomainGroupRequest) (<-
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddDomainGroup(request)
 		response, err := client.AddDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/add_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) AddDomainRecordWithChan(request *AddDomainRecordRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddDomainRecord(request)
 		response, err := client.AddDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/apply_for_retrieval_domain_name.go

@@ -33,8 +33,12 @@ func (client *Client) ApplyForRetrievalDomainNameWithChan(request *ApplyForRetri
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ApplyForRetrievalDomainName(request)
 		response, err := client.ApplyForRetrievalDomainName(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/change_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) ChangeDomainGroupWithChan(request *ChangeDomainGroupReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ChangeDomainGroup(request)
 		response, err := client.ChangeDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/change_domain_of_dns_product.go

@@ -33,8 +33,12 @@ func (client *Client) ChangeDomainOfDnsProductWithChan(request *ChangeDomainOfDn
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ChangeDomainOfDnsProduct(request)
 		response, err := client.ChangeDomainOfDnsProduct(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/check_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) CheckDomainRecordWithChan(request *CheckDomainRecordReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CheckDomainRecord(request)
 		response, err := client.CheckDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_batch_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteBatchDomainRecordsWithChan(request *DeleteBatchDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteBatchDomainRecords(request)
 		response, err := client.DeleteBatchDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_batch_domains.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteBatchDomainsWithChan(request *DeleteBatchDomainsRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteBatchDomains(request)
 		response, err := client.DeleteBatchDomains(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_domain.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteDomainWithChan(request *DeleteDomainRequest) (<-chan
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteDomain(request)
 		response, err := client.DeleteDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteDomainGroupWithChan(request *DeleteDomainGroupReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteDomainGroup(request)
 		response, err := client.DeleteDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteDomainRecordWithChan(request *DeleteDomainRecordRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteDomainRecord(request)
 		response, err := client.DeleteDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_sub_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteSubDomainRecordsWithChan(request *DeleteSubDomainRec
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteSubDomainRecords(request)
 		response, err := client.DeleteSubDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_batch_result.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeBatchResultWithChan(request *DescribeBatchResultRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeBatchResult(request)
 		response, err := client.DescribeBatchResult(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_dns_product_instance.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDnsProductInstanceWithChan(request *DescribeDnsPro
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDnsProductInstance(request)
 		response, err := client.DescribeDnsProductInstance(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_dns_product_instances.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDnsProductInstancesWithChan(request *DescribeDnsPr
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDnsProductInstances(request)
 		response, err := client.DescribeDnsProductInstances(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_dnsslb_sub_domains.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDNSSLBSubDomainsWithChan(request *DescribeDNSSLBSu
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDNSSLBSubDomains(request)
 		response, err := client.DescribeDNSSLBSubDomains(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_groups.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainGroupsWithChan(request *DescribeDomainGroups
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainGroups(request)
 		response, err := client.DescribeDomainGroups(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_info.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainInfoWithChan(request *DescribeDomainInfoRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainInfo(request)
 		response, err := client.DescribeDomainInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_logs.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainLogsWithChan(request *DescribeDomainLogsRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainLogs(request)
 		response, err := client.DescribeDomainLogs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_ns.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainNsWithChan(request *DescribeDomainNsRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainNs(request)
 		response, err := client.DescribeDomainNs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_record_info.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainRecordInfoWithChan(request *DescribeDomainRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainRecordInfo(request)
 		response, err := client.DescribeDomainRecordInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainRecordsWithChan(request *DescribeDomainRecor
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainRecords(request)
 		response, err := client.DescribeDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_whois_info.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainWhoisInfoWithChan(request *DescribeDomainWho
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainWhoisInfo(request)
 		response, err := client.DescribeDomainWhoisInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domains.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainsWithChan(request *DescribeDomainsRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomains(request)
 		response, err := client.DescribeDomains(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_record_logs.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeRecordLogsWithChan(request *DescribeRecordLogsRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeRecordLogs(request)
 		response, err := client.DescribeRecordLogs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_sub_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeSubDomainRecordsWithChan(request *DescribeSubDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeSubDomainRecords(request)
 		response, err := client.DescribeSubDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_support_lines.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeSupportLinesWithChan(request *DescribeSupportLines
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeSupportLines(request)
 		response, err := client.DescribeSupportLines(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/get_main_domain_name.go

@@ -33,8 +33,12 @@ func (client *Client) GetMainDomainNameWithChan(request *GetMainDomainNameReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetMainDomainName(request)
 		response, err := client.GetMainDomainName(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/modify_hichina_domain_dns.go

@@ -33,8 +33,12 @@ func (client *Client) ModifyHichinaDomainDNSWithChan(request *ModifyHichinaDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifyHichinaDomainDNS(request)
 		response, err := client.ModifyHichinaDomainDNS(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/retrieval_domain_name.go

@@ -33,8 +33,12 @@ func (client *Client) RetrievalDomainNameWithChan(request *RetrievalDomainNameRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RetrievalDomainName(request)
 		response, err := client.RetrievalDomainName(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/set_dnsslb_status.go

@@ -33,8 +33,12 @@ func (client *Client) SetDNSSLBStatusWithChan(request *SetDNSSLBStatusRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.SetDNSSLBStatus(request)
 		response, err := client.SetDNSSLBStatus(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/set_domain_record_status.go

@@ -33,8 +33,12 @@ func (client *Client) SetDomainRecordStatusWithChan(request *SetDomainRecordStat
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.SetDomainRecordStatus(request)
 		response, err := client.SetDomainRecordStatus(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_batch_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateBatchDomainRecordsWithChan(request *UpdateBatchDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateBatchDomainRecords(request)
 		response, err := client.UpdateBatchDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_dnsslb_weight.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateDNSSLBWeightWithChan(request *UpdateDNSSLBWeightRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateDNSSLBWeight(request)
 		response, err := client.UpdateDNSSLBWeight(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateDomainGroupWithChan(request *UpdateDomainGroupReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateDomainGroup(request)
 		response, err := client.UpdateDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateDomainRecordWithChan(request *UpdateDomainRecordRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateDomainRecord(request)
 		response, err := client.UpdateDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 5 - 2
services/arms/arms_query_data_set.go

@@ -33,8 +33,11 @@ func (client *Client) ARMSQueryDataSetWithChan(request *ARMSQueryDataSetRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ARMSQueryDataSet(request)
 		response, err := client.ARMSQueryDataSet(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/arms/where_in_dim_query.go

@@ -33,8 +33,12 @@ func (client *Client) WhereInDimQueryWithChan(request *WhereInDimQueryRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.WhereInDimQuery(request)
 		response, err := client.WhereInDimQuery(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/arms4finance/arms_query_data_set.go

@@ -33,8 +33,12 @@ func (client *Client) ARMSQueryDataSetWithChan(request *ARMSQueryDataSetRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ARMSQueryDataSet(request)
 		response, err := client.ARMSQueryDataSet(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/arms4finance/where_in_dim_query.go

@@ -33,8 +33,12 @@ func (client *Client) WhereInDimQueryWithChan(request *WhereInDimQueryRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.WhereInDimQuery(request)
 		response, err := client.WhereInDimQuery(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/add_phone_number.go

@@ -33,8 +33,12 @@ func (client *Client) AddPhoneNumberWithChan(request *AddPhoneNumberRequest) (<-
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddPhoneNumber(request)
 		response, err := client.AddPhoneNumber(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/assign_users.go

@@ -33,8 +33,12 @@ func (client *Client) AssignUsersWithChan(request *AssignUsersRequest) (<-chan *
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AssignUsers(request)
 		response, err := client.AssignUsers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/create_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) CreateSkillGroupWithChan(request *CreateSkillGroupRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CreateSkillGroup(request)
 		response, err := client.CreateSkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/create_user.go

@@ -33,8 +33,12 @@ func (client *Client) CreateUserWithChan(request *CreateUserRequest) (<-chan *Cr
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CreateUser(request)
 		response, err := client.CreateUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/delete_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteSkillGroupWithChan(request *DeleteSkillGroupRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteSkillGroup(request)
 		response, err := client.DeleteSkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/download_recording.go

@@ -33,8 +33,12 @@ func (client *Client) DownloadRecordingWithChan(request *DownloadRecordingReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DownloadRecording(request)
 		response, err := client.DownloadRecording(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/get_config.go

@@ -33,8 +33,12 @@ func (client *Client) GetConfigWithChan(request *GetConfigRequest) (<-chan *GetC
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetConfig(request)
 		response, err := client.GetConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/get_service_extensions.go

@@ -33,8 +33,12 @@ func (client *Client) GetServiceExtensionsWithChan(request *GetServiceExtensions
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetServiceExtensions(request)
 		response, err := client.GetServiceExtensions(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/get_user.go

@@ -33,8 +33,12 @@ func (client *Client) GetUserWithChan(request *GetUserRequest) (<-chan *GetUserR
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetUser(request)
 		response, err := client.GetUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_call_detail_records.go

@@ -33,8 +33,12 @@ func (client *Client) ListCallDetailRecordsWithChan(request *ListCallDetailRecor
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListCallDetailRecords(request)
 		response, err := client.ListCallDetailRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_contact_flows.go

@@ -33,8 +33,12 @@ func (client *Client) ListContactFlowsWithChan(request *ListContactFlowsRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListContactFlows(request)
 		response, err := client.ListContactFlows(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_phone_numbers.go

@@ -33,8 +33,12 @@ func (client *Client) ListPhoneNumbersWithChan(request *ListPhoneNumbersRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListPhoneNumbers(request)
 		response, err := client.ListPhoneNumbers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_recordings.go

@@ -33,8 +33,12 @@ func (client *Client) ListRecordingsWithChan(request *ListRecordingsRequest) (<-
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListRecordings(request)
 		response, err := client.ListRecordings(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_roles.go

@@ -33,8 +33,12 @@ func (client *Client) ListRolesWithChan(request *ListRolesRequest) (<-chan *List
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListRoles(request)
 		response, err := client.ListRoles(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_skill_groups.go

@@ -33,8 +33,12 @@ func (client *Client) ListSkillGroupsWithChan(request *ListSkillGroupsRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListSkillGroups(request)
 		response, err := client.ListSkillGroups(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_skill_groups_of_user.go

@@ -33,8 +33,12 @@ func (client *Client) ListSkillGroupsOfUserWithChan(request *ListSkillGroupsOfUs
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListSkillGroupsOfUser(request)
 		response, err := client.ListSkillGroupsOfUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_users.go

@@ -33,8 +33,12 @@ func (client *Client) ListUsersWithChan(request *ListUsersRequest) (<-chan *List
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListUsers(request)
 		response, err := client.ListUsers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_users_of_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) ListUsersOfSkillGroupWithChan(request *ListUsersOfSkillGro
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListUsersOfSkillGroup(request)
 		response, err := client.ListUsersOfSkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/modify_phone_number.go

@@ -33,8 +33,12 @@ func (client *Client) ModifyPhoneNumberWithChan(request *ModifyPhoneNumberReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifyPhoneNumber(request)
 		response, err := client.ModifyPhoneNumber(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/modify_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) ModifySkillGroupWithChan(request *ModifySkillGroupRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifySkillGroup(request)
 		response, err := client.ModifySkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/modify_user.go

@@ -33,8 +33,12 @@ func (client *Client) ModifyUserWithChan(request *ModifyUserRequest) (<-chan *Mo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifyUser(request)
 		response, err := client.ModifyUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/refresh_token.go

@@ -33,8 +33,12 @@ func (client *Client) RefreshTokenWithChan(request *RefreshTokenRequest) (<-chan
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RefreshToken(request)
 		response, err := client.RefreshToken(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/remove_phone_number.go

@@ -33,8 +33,12 @@ func (client *Client) RemovePhoneNumberWithChan(request *RemovePhoneNumberReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RemovePhoneNumber(request)
 		response, err := client.RemovePhoneNumber(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/remove_users.go

@@ -33,8 +33,12 @@ func (client *Client) RemoveUsersWithChan(request *RemoveUsersRequest) (<-chan *
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RemoveUsers(request)
 		response, err := client.RemoveUsers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/request_login_info.go

@@ -33,8 +33,12 @@ func (client *Client) RequestLoginInfoWithChan(request *RequestLoginInfoRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RequestLoginInfo(request)
 		response, err := client.RequestLoginInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_cdn_domain.go

@@ -33,8 +33,12 @@ func (client *Client) AddCdnDomainWithChan(request *AddCdnDomainRequest) (<-chan
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddCdnDomain(request)
 		response, err := client.AddCdnDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_app_record_config.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveAppRecordConfigWithChan(request *AddLiveAppRecordCo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveAppRecordConfig(request)
 		response, err := client.AddLiveAppRecordConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_app_snapshot_config.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveAppSnapshotConfigWithChan(request *AddLiveAppSnapsh
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveAppSnapshotConfig(request)
 		response, err := client.AddLiveAppSnapshotConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_domain_mapping.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveDomainMappingWithChan(request *AddLiveDomainMapping
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveDomainMapping(request)
 		response, err := client.AddLiveDomainMapping(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_pull_stream_info.go

@@ -33,8 +33,12 @@ func (client *Client) AddLivePullStreamInfoWithChan(request *AddLivePullStreamIn
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLivePullStreamInfo(request)
 		response, err := client.AddLivePullStreamInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_stream_transcode.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveStreamTranscodeWithChan(request *AddLiveStreamTrans
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveStreamTranscode(request)
 		response, err := client.AddLiveStreamTranscode(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/batch_describe_domain_bps_data.go

@@ -33,8 +33,12 @@ func (client *Client) BatchDescribeDomainBpsDataWithChan(request *BatchDescribeD
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.BatchDescribeDomainBpsData(request)
 		response, err := client.BatchDescribeDomainBpsData(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/clear_user_black_list.go

@@ -33,8 +33,12 @@ func (client *Client) ClearUserBlackListWithChan(request *ClearUserBlackListRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ClearUserBlackList(request)
 		response, err := client.ClearUserBlackList(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/clear_user_domain_black_list.go

@@ -33,8 +33,12 @@ func (client *Client) ClearUserDomainBlackListWithChan(request *ClearUserDomainB
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ClearUserDomainBlackList(request)
 		response, err := client.ClearUserDomainBlackList(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/create_live_stream_record_index_files.go

@@ -33,8 +33,12 @@ func (client *Client) CreateLiveStreamRecordIndexFilesWithChan(request *CreateLi
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CreateLiveStreamRecordIndexFiles(request)
 		response, err := client.CreateLiveStreamRecordIndexFiles(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_cdn_domain.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteCdnDomainWithChan(request *DeleteCdnDomainRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteCdnDomain(request)
 		response, err := client.DeleteCdnDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_http_header_config.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteHttpHeaderConfigWithChan(request *DeleteHttpHeaderCo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteHttpHeaderConfig(request)
 		response, err := client.DeleteHttpHeaderConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_app_record_config.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveAppRecordConfigWithChan(request *DeleteLiveAppRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveAppRecordConfig(request)
 		response, err := client.DeleteLiveAppRecordConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_app_snapshot_config.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveAppSnapshotConfigWithChan(request *DeleteLiveApp
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveAppSnapshotConfig(request)
 		response, err := client.DeleteLiveAppSnapshotConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_domain_mapping.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveDomainMappingWithChan(request *DeleteLiveDomainM
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveDomainMapping(request)
 		response, err := client.DeleteLiveDomainMapping(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_pull_stream_info.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLivePullStreamInfoWithChan(request *DeleteLivePullSt
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLivePullStreamInfo(request)
 		response, err := client.DeleteLivePullStreamInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_stream_transcode.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveStreamTranscodeWithChan(request *DeleteLiveStrea
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveStreamTranscode(request)
 		response, err := client.DeleteLiveStreamTranscode(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_domain_base_detail.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnDomainBaseDetailWithChan(request *DescribeCdnDo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnDomainBaseDetail(request)
 		response, err := client.DescribeCdnDomainBaseDetail(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_domain_detail.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnDomainDetailWithChan(request *DescribeCdnDomain
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnDomainDetail(request)
 		response, err := client.DescribeCdnDomainDetail(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_domain_logs.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnDomainLogsWithChan(request *DescribeCdnDomainLo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnDomainLogs(request)
 		response, err := client.DescribeCdnDomainLogs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_monitor_data.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnMonitorDataWithChan(request *DescribeCdnMonitor
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnMonitorData(request)
 		response, err := client.DescribeCdnMonitorData(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_region_and_isp.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnRegionAndIspWithChan(request *DescribeCdnRegion
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnRegionAndIsp(request)
 		response, err := client.DescribeCdnRegionAndIsp(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_service.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnServiceWithChan(request *DescribeCdnServiceRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnService(request)
 		response, err := client.DescribeCdnService(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_types.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnTypesWithChan(request *DescribeCdnTypesRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnTypes(request)
 		response, err := client.DescribeCdnTypes(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_domain_average_response_time.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainAverageResponseTimeWithChan(request *Describ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainAverageResponseTime(request)
 		response, err := client.DescribeDomainAverageResponseTime(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_domain_bps_data.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainBpsDataWithChan(request *DescribeDomainBpsDa
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainBpsData(request)
 		response, err := client.DescribeDomainBpsData(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

部分文件因文件數量過多而無法顯示