From: Xinchen Hui Date: Sun, 19 Jun 2016 04:33:54 +0000 (-0700) Subject: Merge branch 'PHP-5.6' into PHP-7.0 X-Git-Tag: php-7.1.0alpha2~23^2~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6b83832cf48ec42008b262ace9742fe820d322cd;p=php Merge branch 'PHP-5.6' into PHP-7.0 Conflicts: main/streams/xp_socket.c --- 6b83832cf48ec42008b262ace9742fe820d322cd diff --cc main/streams/xp_socket.c index 7a21fbef44,90c5df0b8a..bf7e98c56b --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@@ -262,22 -243,33 +262,32 @@@ static inline int sock_sendto(php_netst } static inline int sock_recvfrom(php_netstream_data_t *sock, char *buf, size_t buflen, int flags, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen - TSRMLS_DC) + ) { - php_sockaddr_storage sa; - socklen_t sl = sizeof(sa); int ret; int want_addr = textaddr || addr; if (want_addr) { + php_sockaddr_storage sa; + socklen_t sl = sizeof(sa); - ret = recvfrom(sock->socket, buf, buflen, flags, (struct sockaddr*)&sa, &sl); + ret = recvfrom(sock->socket, buf, XP_SOCK_BUF_SIZE(buflen), flags, (struct sockaddr*)&sa, &sl); ret = (ret == SOCK_CONN_ERR) ? -1 : ret; - php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl, - textaddr, addr, addrlen); + if (sl) { + php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl, - textaddr, textaddrlen, addr, addrlen TSRMLS_CC); ++ textaddr, addr, addrlen); + } else { + if (textaddr) { - *textaddr = estrndup("", 0); - *textaddrlen = 0; ++ *textaddr = ZSTR_EMPTY_ALLOC(); + } + if (addr) { + *addr = NULL; + *addrlen = 0; + } + } } else { - ret = recv(sock->socket, buf, buflen, flags); + ret = recv(sock->socket, buf, XP_SOCK_BUF_SIZE(buflen), flags); ret = (ret == SOCK_CONN_ERR) ? -1 : ret; }