1 --- PHP_5_3/ext/sockets/sockets.c 2011/03/14 22:27:40 309237
2 +++ PHP_5_3/ext/sockets/sockets.c 2011/03/14 22:59:05 309238
7 -static int php_accept_connect(php_socket *in_sock, php_socket **new_sock, struct sockaddr *la TSRMLS_DC) /* {{{ */
8 +static int php_accept_connect(php_socket *in_sock, php_socket **new_sock, struct sockaddr *la, socklen_t *la_len TSRMLS_DC) /* {{{ */
11 php_socket *out_sock = (php_socket*)emalloc(sizeof(php_socket));
14 - salen = sizeof(*la);
15 - out_sock->blocking = 1;
17 - out_sock->bsd_socket = accept(in_sock->bsd_socket, la, &salen);
18 + out_sock->bsd_socket = accept(in_sock->bsd_socket, la, la_len);
20 if (IS_INVALID_SOCKET(out_sock)) {
21 PHP_SOCKET_ERROR(out_sock, "unable to accept incoming connection", errno);
26 + out_sock->error = 0;
27 + out_sock->blocking = 1;
28 + out_sock->type = la->sa_family;
33 @@ -1023,9 +1024,10 @@
34 Accepts a connection on the listening socket fd */
35 PHP_FUNCTION(socket_accept)
38 - php_socket *php_sock, *new_sock;
39 - struct sockaddr_in sa;
41 + php_socket *php_sock, *new_sock;
42 + php_sockaddr_storage sa;
43 + socklen_t sa_len = sizeof(sa);
45 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg1) == FAILURE) {
47 @@ -1033,12 +1035,9 @@
49 ZEND_FETCH_RESOURCE(php_sock, php_socket *, &arg1, -1, le_socket_name, le_socket);
51 - if (!php_accept_connect(php_sock, &new_sock, (struct sockaddr *) &sa TSRMLS_CC)) {
52 + if (!php_accept_connect(php_sock, &new_sock, (struct sockaddr*)&sa, &sa_len TSRMLS_CC)) {
56 - new_sock->error = 0;
57 - new_sock->blocking = 1;
59 ZEND_REGISTER_RESOURCE(return_value, new_sock, le_socket);