Skip to content

Commit fc9b716

Browse files
committed
Remove unnecessary indirection in addrinfo struct
1 parent fae00ab commit fc9b716

File tree

1 file changed

+25
-27
lines changed

1 file changed

+25
-27
lines changed

ext/sockets/sockets.c

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ static HashTable *socket_get_gc(zend_object *object, zval **table, int *n)
154154
/* AddressInfo class */
155155

156156
typedef struct {
157-
struct addrinfo *addrinfo;
157+
struct addrinfo addrinfo;
158158
zend_object std;
159159
} php_addrinfo;
160160

@@ -186,11 +186,10 @@ static void address_info_free_obj(zend_object *object)
186186
{
187187
php_addrinfo *address_info = address_info_from_obj(object);
188188

189-
if (address_info->addrinfo->ai_canonname != NULL) {
190-
efree(address_info->addrinfo->ai_canonname);
189+
if (address_info->addrinfo.ai_canonname != NULL) {
190+
efree(address_info->addrinfo.ai_canonname);
191191
}
192-
efree(address_info->addrinfo->ai_addr);
193-
efree(address_info->addrinfo);
192+
efree(address_info->addrinfo.ai_addr);
194193

195194
zend_object_std_dtor(&address_info->std);
196195
}
@@ -2303,14 +2302,13 @@ PHP_FUNCTION(socket_addrinfo_lookup)
23032302
object_init_ex(&zaddr, address_info_ce);
23042303
res = Z_ADDRESS_INFO_P(&zaddr);
23052304

2306-
res->addrinfo = emalloc(sizeof(struct addrinfo));
2307-
memcpy(res->addrinfo, rp, sizeof(struct addrinfo));
2305+
memcpy(&res->addrinfo, rp, sizeof(struct addrinfo));
23082306

2309-
res->addrinfo->ai_addr = emalloc(rp->ai_addrlen);
2310-
memcpy(res->addrinfo->ai_addr, rp->ai_addr, rp->ai_addrlen);
2307+
res->addrinfo.ai_addr = emalloc(rp->ai_addrlen);
2308+
memcpy(res->addrinfo.ai_addr, rp->ai_addr, rp->ai_addrlen);
23112309

23122310
if (rp->ai_canonname != NULL) {
2313-
res->addrinfo->ai_canonname = estrdup(rp->ai_canonname);
2311+
res->addrinfo.ai_canonname = estrdup(rp->ai_canonname);
23142312
}
23152313

23162314
add_next_index_zval(return_value, &zaddr);
@@ -2338,8 +2336,8 @@ PHP_FUNCTION(socket_addrinfo_bind)
23382336
object_init_ex(return_value, socket_ce);
23392337
php_sock = Z_SOCKET_P(return_value);
23402338

2341-
php_sock->bsd_socket = socket(ai->addrinfo->ai_family, ai->addrinfo->ai_socktype, ai->addrinfo->ai_protocol);
2342-
php_sock->type = ai->addrinfo->ai_family;
2339+
php_sock->bsd_socket = socket(ai->addrinfo.ai_family, ai->addrinfo.ai_socktype, ai->addrinfo.ai_protocol);
2340+
php_sock->type = ai->addrinfo.ai_family;
23432341

23442342
if (IS_INVALID_SOCKET(php_sock)) {
23452343
SOCKETS_G(last_error) = errno;
@@ -2365,7 +2363,7 @@ PHP_FUNCTION(socket_addrinfo_bind)
23652363
case AF_INET6:
23662364
#endif
23672365
{
2368-
retval = bind(php_sock->bsd_socket, ai->addrinfo->ai_addr, ai->addrinfo->ai_addrlen);
2366+
retval = bind(php_sock->bsd_socket, ai->addrinfo.ai_addr, ai->addrinfo.ai_addrlen);
23692367
break;
23702368
}
23712369
default:
@@ -2401,8 +2399,8 @@ PHP_FUNCTION(socket_addrinfo_connect)
24012399
object_init_ex(return_value, socket_ce);
24022400
php_sock = Z_SOCKET_P(return_value);
24032401

2404-
php_sock->bsd_socket = socket(ai->addrinfo->ai_family, ai->addrinfo->ai_socktype, ai->addrinfo->ai_protocol);
2405-
php_sock->type = ai->addrinfo->ai_family;
2402+
php_sock->bsd_socket = socket(ai->addrinfo.ai_family, ai->addrinfo.ai_socktype, ai->addrinfo.ai_protocol);
2403+
php_sock->type = ai->addrinfo.ai_family;
24062404

24072405
if (IS_INVALID_SOCKET(php_sock)) {
24082406
SOCKETS_G(last_error) = errno;
@@ -2428,7 +2426,7 @@ PHP_FUNCTION(socket_addrinfo_connect)
24282426
case AF_INET6:
24292427
#endif
24302428
{
2431-
retval = connect(php_sock->bsd_socket, ai->addrinfo->ai_addr, ai->addrinfo->ai_addrlen);
2429+
retval = connect(php_sock->bsd_socket, ai->addrinfo.ai_addr, ai->addrinfo.ai_addrlen);
24322430
break;
24332431
}
24342432
default:
@@ -2461,34 +2459,34 @@ PHP_FUNCTION(socket_addrinfo_explain)
24612459

24622460
array_init(return_value);
24632461

2464-
add_assoc_long(return_value, "ai_flags", ai->addrinfo->ai_flags);
2465-
add_assoc_long(return_value, "ai_family", ai->addrinfo->ai_family);
2466-
add_assoc_long(return_value, "ai_socktype", ai->addrinfo->ai_socktype);
2467-
add_assoc_long(return_value, "ai_protocol", ai->addrinfo->ai_protocol);
2468-
if (ai->addrinfo->ai_canonname != NULL) {
2469-
add_assoc_string(return_value, "ai_canonname", ai->addrinfo->ai_canonname);
2462+
add_assoc_long(return_value, "ai_flags", ai->addrinfo.ai_flags);
2463+
add_assoc_long(return_value, "ai_family", ai->addrinfo.ai_family);
2464+
add_assoc_long(return_value, "ai_socktype", ai->addrinfo.ai_socktype);
2465+
add_assoc_long(return_value, "ai_protocol", ai->addrinfo.ai_protocol);
2466+
if (ai->addrinfo.ai_canonname != NULL) {
2467+
add_assoc_string(return_value, "ai_canonname", ai->addrinfo.ai_canonname);
24702468
}
24712469

24722470
array_init(&sockaddr);
2473-
switch(ai->addrinfo->ai_family) {
2471+
switch (ai->addrinfo.ai_family) {
24742472
case AF_INET:
24752473
{
2476-
struct sockaddr_in *sa = (struct sockaddr_in *) ai->addrinfo->ai_addr;
2474+
struct sockaddr_in *sa = (struct sockaddr_in *) ai->addrinfo.ai_addr;
24772475
char addr[INET_ADDRSTRLEN];
24782476

24792477
add_assoc_long(&sockaddr, "sin_port", ntohs((unsigned short) sa->sin_port));
2480-
inet_ntop(ai->addrinfo->ai_family, &sa->sin_addr, addr, sizeof(addr));
2478+
inet_ntop(ai->addrinfo.ai_family, &sa->sin_addr, addr, sizeof(addr));
24812479
add_assoc_string(&sockaddr, "sin_addr", addr);
24822480
break;
24832481
}
24842482
#if HAVE_IPV6
24852483
case AF_INET6:
24862484
{
2487-
struct sockaddr_in6 *sa = (struct sockaddr_in6 *) ai->addrinfo->ai_addr;
2485+
struct sockaddr_in6 *sa = (struct sockaddr_in6 *) ai->addrinfo.ai_addr;
24882486
char addr[INET6_ADDRSTRLEN];
24892487

24902488
add_assoc_long(&sockaddr, "sin6_port", ntohs((unsigned short) sa->sin6_port));
2491-
inet_ntop(ai->addrinfo->ai_family, &sa->sin6_addr, addr, sizeof(addr));
2489+
inet_ntop(ai->addrinfo.ai_family, &sa->sin6_addr, addr, sizeof(addr));
24922490
add_assoc_string(&sockaddr, "sin6_addr", addr);
24932491
break;
24942492
}

0 commit comments

Comments
 (0)