Skip to content

Commit 4cd1e69

Browse files
committed
ext/soap/php_http.c: Refactor get_http_body()
- Use zend_string* to prevent unnecessary strlen computations in the futrue - Use bool instead of int - Reduce scope of variables
1 parent 3351e41 commit 4cd1e69

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

ext/soap/php_http.c

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
static char *get_http_header_value_nodup(char *headers, char *type, size_t *len);
2323
static char *get_http_header_value(char *headers, char *type);
24-
static zend_string *get_http_body(php_stream *socketd, int close, char *headers);
24+
static zend_string *get_http_body(php_stream *stream, bool close, zend_string *headers);
2525
static zend_string *get_http_headers(php_stream *socketd);
2626

2727
#define smart_str_append_const(str, const) \
@@ -1124,7 +1124,7 @@ bool make_http_soap_request(
11241124
}
11251125

11261126

1127-
http_body = get_http_body(stream, http_close, ZSTR_VAL(http_headers));
1127+
http_body = get_http_body(stream, http_close, http_headers);
11281128
if (!http_body) {
11291129
if (request != buf) {
11301130
zend_string_release_ex(request, 0);
@@ -1454,25 +1454,32 @@ static char *get_http_header_value(char *headers, char *type)
14541454
return NULL;
14551455
}
14561456

1457-
static zend_string* get_http_body(php_stream *stream, int close, char *headers)
1457+
static zend_string* get_http_body(php_stream *stream, bool close, zend_string *headers)
14581458
{
14591459
zend_string *http_buf = NULL;
14601460
char *header;
1461-
int header_close = close, header_chunked = 0, header_length = 0, http_buf_size = 0;
1461+
bool header_close = close;
1462+
bool header_chunked = false;
1463+
int header_length = 0;
1464+
size_t http_buf_size = 0;
14621465

14631466
if (!close) {
1464-
header = get_http_header_value(headers, "Connection:");
1467+
header = get_http_header_value(ZSTR_VAL(headers), "Connection:");
14651468
if (header) {
1466-
if(!strncasecmp(header, "close", sizeof("close")-1)) header_close = 1;
1469+
if (!strncasecmp(header, "close", sizeof("close")-1)) {
1470+
header_close = true;
1471+
}
14671472
efree(header);
14681473
}
14691474
}
1470-
header = get_http_header_value(headers, "Transfer-Encoding:");
1475+
header = get_http_header_value(ZSTR_VAL(headers), "Transfer-Encoding:");
14711476
if (header) {
1472-
if(!strncasecmp(header, "chunked", sizeof("chunked")-1)) header_chunked = 1;
1477+
if (!strncasecmp(header, "chunked", sizeof("chunked")-1)) {
1478+
header_chunked = true;
1479+
}
14731480
efree(header);
14741481
}
1475-
header = get_http_header_value(headers, "Content-Length:");
1482+
header = get_http_header_value(ZSTR_VAL(headers), "Content-Length:");
14761483
if (header) {
14771484
header_length = atoi(header);
14781485
efree(header);
@@ -1483,9 +1490,8 @@ static zend_string* get_http_body(php_stream *stream, int close, char *headers)
14831490
}
14841491

14851492
if (header_chunked) {
1486-
char ch, done, headerbuf[8192];
1487-
1488-
done = FALSE;
1493+
char headerbuf[8192];
1494+
bool done = false;
14891495

14901496
while (!done) {
14911497
int buf_size = 0;
@@ -1495,13 +1501,6 @@ static zend_string* get_http_body(php_stream *stream, int close, char *headers)
14951501
if (buf_size > 0) {
14961502
size_t len_size = 0;
14971503

1498-
if (http_buf_size + buf_size + 1 < 0) {
1499-
if (http_buf) {
1500-
zend_string_release_ex(http_buf, 0);
1501-
}
1502-
return NULL;
1503-
}
1504-
15051504
if (http_buf) {
15061505
http_buf = zend_string_realloc(http_buf, http_buf_size + buf_size, 0);
15071506
} else {
@@ -1512,15 +1511,15 @@ static zend_string* get_http_body(php_stream *stream, int close, char *headers)
15121511
ssize_t len_read = php_stream_read(stream, http_buf->val + http_buf_size, buf_size - len_size);
15131512
if (len_read <= 0) {
15141513
/* Error or EOF */
1515-
done = TRUE;
1514+
done = true;
15161515
break;
15171516
}
15181517
len_size += len_read;
15191518
http_buf_size += len_read;
15201519
}
15211520

15221521
/* Eat up '\r' '\n' */
1523-
ch = php_stream_getc(stream);
1522+
char ch = php_stream_getc(stream);
15241523
if (ch == '\r') {
15251524
ch = php_stream_getc(stream);
15261525
}
@@ -1540,7 +1539,7 @@ static zend_string* get_http_body(php_stream *stream, int close, char *headers)
15401539
return NULL;
15411540
}
15421541
if (buf_size == 0) {
1543-
done = TRUE;
1542+
done = true;
15441543
}
15451544
}
15461545

0 commit comments

Comments
 (0)