Skip to content

Commit d8bddd2

Browse files
authored
Merge pull request #490 from RachelTucker/5_0_x_API-GOSDK-29-mem-leak-fix
GOSDK-29: SDK leaks memory from unclosed HTTP response bodies
2 parents 0a53ef7 + 3d81ca2 commit d8bddd2

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

ds3-autogen-go/src/main/java/com/spectralogic/ds3autogen/go/GoCodeGenerator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,9 @@ static ResponseModelGenerator<?> getResponseGenerator(final Ds3Request ds3Reques
251251
* Retrieves the appropriate template that will generate the Go response handler
252252
*/
253253
private Template getResponseTemplate(final Ds3Request ds3Request) throws IOException {
254-
//TODO special case if necessary
254+
if (isGetObjectAmazonS3Request(ds3Request)) {
255+
return config.getTemplate("response/response_get_object_template.ftl");
256+
}
255257
return config.getTemplate("response/response_template.ftl");
256258
}
257259

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
type ${name} struct {
2+
${payloadStruct}
3+
Headers *http.Header
4+
}
5+
6+
${parseResponseMethod}
7+
8+
func New${name}(webResponse WebResponse) (*${name}, error) {
9+
expectedStatusCodes := []int { ${expectedCodes} }
10+
11+
switch code := webResponse.StatusCode(); code {
12+
<#list responseCodes as code>
13+
case ${code.code}:
14+
${code.parseResponse}
15+
</#list>
16+
default:
17+
defer webResponse.Body().Close()
18+
return nil, buildBadStatusCodeError(webResponse, expectedStatusCodes)
19+
}
20+
}
21+

ds3-autogen-go/src/main/resources/tmpls/go/response/response_template.ftl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ type ${name} struct {
66
${parseResponseMethod}
77

88
func New${name}(webResponse WebResponse) (*${name}, error) {
9+
defer webResponse.Body().Close()
910
expectedStatusCodes := []int { ${expectedCodes} }
1011

1112
switch code := webResponse.StatusCode(); code {

0 commit comments

Comments
 (0)