@@ -843,9 +843,12 @@ static void sw_inline php_swoole_init_socket(zval *zobject, SocketObject *sock)
843
843
sock->socket ->set_zero_copy (true );
844
844
sock->socket ->set_buffer_allocator (sw_zend_string_allocator ());
845
845
zend_update_property_long (swoole_socket_coro_ce, SW_Z8_OBJ_P (zobject), ZEND_STRL (" fd" ), sock->socket ->get_fd ());
846
- zend_update_property_long (swoole_socket_coro_ce, SW_Z8_OBJ_P (zobject), ZEND_STRL (" domain" ), sock->socket ->get_sock_domain ());
847
- zend_update_property_long (swoole_socket_coro_ce, SW_Z8_OBJ_P (zobject), ZEND_STRL (" type" ), sock->socket ->get_sock_type ());
848
- zend_update_property_long (swoole_socket_coro_ce, SW_Z8_OBJ_P (zobject), ZEND_STRL (" protocol" ), sock->socket ->get_sock_protocol ());
846
+ zend_update_property_long (
847
+ swoole_socket_coro_ce, SW_Z8_OBJ_P (zobject), ZEND_STRL (" domain" ), sock->socket ->get_sock_domain ());
848
+ zend_update_property_long (
849
+ swoole_socket_coro_ce, SW_Z8_OBJ_P (zobject), ZEND_STRL (" type" ), sock->socket ->get_sock_type ());
850
+ zend_update_property_long (
851
+ swoole_socket_coro_ce, SW_Z8_OBJ_P (zobject), ZEND_STRL (" protocol" ), sock->socket ->get_sock_protocol ());
849
852
}
850
853
851
854
SW_API bool php_swoole_export_socket (zval *zobject, Socket *_socket) {
@@ -1479,26 +1482,27 @@ static void swoole_socket_coro_read_vector(INTERNAL_FUNCTION_PARAMETERS, const b
1479
1482
1480
1483
std::unique_ptr<iovec[]> iov (new iovec[iovcnt]);
1481
1484
1482
- SW_HASHTABLE_FOREACH_START (vht, zelement)
1483
- if (!ZVAL_IS_LONG (zelement)) {
1484
- zend_throw_exception_ex (swoole_socket_coro_exception_ce,
1485
- EINVAL,
1486
- " Item #[%d] must be of type int, %s given" ,
1487
- iov_index,
1488
- zend_get_type_by_const (Z_TYPE_P (zelement)));
1489
- RETURN_FALSE;
1490
- }
1491
- if (Z_LVAL_P (zelement) < 0 ) {
1492
- zend_throw_exception_ex (
1493
- swoole_socket_coro_exception_ce, EINVAL, " Item #[%d] must be greater than 0" , iov_index);
1494
- RETURN_FALSE;
1495
- }
1496
- size_t iov_len = Z_LVAL_P (zelement);
1485
+ SW_HASHTABLE_FOREACH_START (vht, zelement) {
1486
+ if (!ZVAL_IS_LONG (zelement)) {
1487
+ zend_throw_exception_ex (swoole_socket_coro_exception_ce,
1488
+ EINVAL,
1489
+ " Item #[%d] must be of type int, %s given" ,
1490
+ iov_index,
1491
+ zend_get_type_by_const (Z_TYPE_P (zelement)));
1492
+ RETURN_FALSE;
1493
+ }
1494
+ if (Z_LVAL_P (zelement) < 0 ) {
1495
+ zend_throw_exception_ex (
1496
+ swoole_socket_coro_exception_ce, EINVAL, " Item #[%d] must be greater than 0" , iov_index);
1497
+ RETURN_FALSE;
1498
+ }
1499
+ size_t iov_len = Z_LVAL_P (zelement);
1497
1500
1498
- iov[iov_index].iov_base = zend_string_alloc (iov_len, 0 )->val ;
1499
- iov[iov_index].iov_len = iov_len;
1500
- iov_index++;
1501
- total_length += iov_len;
1501
+ iov[iov_index].iov_base = zend_string_alloc (iov_len, 0 )->val ;
1502
+ iov[iov_index].iov_len = iov_len;
1503
+ iov_index++;
1504
+ total_length += iov_len;
1505
+ }
1502
1506
SW_HASHTABLE_FOREACH_END ();
1503
1507
1504
1508
swoole::network::IOVector io_vector ((struct iovec *) iov.get (), iovcnt);
@@ -1533,6 +1537,7 @@ static void swoole_socket_coro_read_vector(INTERNAL_FUNCTION_PARAMETERS, const b
1533
1537
real_count = iov_index + 1 ;
1534
1538
zend_string *str = zend::fetch_zend_string_by_val ((char *) iov[iov_index].iov_base );
1535
1539
iov[iov_index].iov_base = sw_zend_string_recycle (str, iov[iov_index].iov_len , offset_bytes)->val ;
1540
+ iov[iov_index].iov_len = offset_bytes;
1536
1541
free_func (iov.get (), iovcnt, real_count);
1537
1542
} else {
1538
1543
real_count = iovcnt;
@@ -1767,9 +1772,10 @@ static PHP_METHOD(swoole_socket_coro, getOption) {
1767
1772
}
1768
1773
case SO_RCVTIMEO:
1769
1774
case SO_SNDTIMEO: {
1770
- double timeout = sock->socket ->get_timeout (optname == SO_RCVTIMEO ? Socket::TIMEOUT_READ : Socket::TIMEOUT_WRITE);
1775
+ double timeout =
1776
+ sock->socket ->get_timeout (optname == SO_RCVTIMEO ? Socket::TIMEOUT_READ : Socket::TIMEOUT_WRITE);
1771
1777
array_init (return_value);
1772
- int sec = (int ) timeout;
1778
+ int sec = (int ) timeout;
1773
1779
add_assoc_long (return_value, " sec" , (int ) timeout);
1774
1780
add_assoc_long (return_value, " usec" , (timeout - (double ) sec) * 1000000 );
1775
1781
break ;
0 commit comments