Commit 84ead32
committed
ssl: support IO-like object as the underlying transport
OpenSSL::SSL::SSLSocket currently requires a real IO (socket) object
because it passes the file descriptor to OpenSSL.
OpenSSL internally uses an I/O abstraction layer called BIO to interact
with the underlying socket. BIO is pluggable; the implementation can be
supplied by a user application as long as it implements the necessary
BIO functions. We can make our own BIO implementation ("BIO method")
that wraps any Ruby IO-like object using normal Ruby method calls.
Support for such an IO-like object is useful for establishing TLS
connections on top of non-OS sockets, such as another TLS connection or
an HTTP/2 tunnel.
For performance reason, this patch continues to use the original socket
BIO if the user passes a real IO object.1 parent 0ff6d21 commit 84ead32
File tree
3 files changed
+205
-23
lines changed- ext/openssl
- test/openssl
3 files changed
+205
-23
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1551 | 1551 | | |
1552 | 1552 | | |
1553 | 1553 | | |
1554 | | - | |
| 1554 | + | |
| 1555 | + | |
| 1556 | + | |
| 1557 | + | |
| 1558 | + | |
1555 | 1559 | | |
1556 | 1560 | | |
1557 | 1561 | | |
| |||
1601 | 1605 | | |
1602 | 1606 | | |
1603 | 1607 | | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
1604 | 1616 | | |
1605 | 1617 | | |
1606 | 1618 | | |
1607 | 1619 | | |
1608 | 1620 | | |
1609 | | - | |
1610 | | - | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
1611 | 1631 | | |
1612 | 1632 | | |
1613 | 1633 | | |
| |||
1635 | 1655 | | |
1636 | 1656 | | |
1637 | 1657 | | |
1638 | | - | |
1639 | | - | |
1640 | | - | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
1641 | 1670 | | |
1642 | 1671 | | |
1643 | 1672 | | |
| |||
1669 | 1698 | | |
1670 | 1699 | | |
1671 | 1700 | | |
1672 | | - | |
1673 | 1701 | | |
1674 | 1702 | | |
1675 | 1703 | | |
1676 | 1704 | | |
1677 | 1705 | | |
1678 | 1706 | | |
1679 | | - | |
1680 | | - | |
1681 | | - | |
1682 | | - | |
1683 | | - | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
1684 | 1719 | | |
1685 | 1720 | | |
1686 | 1721 | | |
| |||
1691 | 1726 | | |
1692 | 1727 | | |
1693 | 1728 | | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
| 1755 | + | |
| 1756 | + | |
| 1757 | + | |
| 1758 | + | |
| 1759 | + | |
| 1760 | + | |
1694 | 1761 | | |
1695 | 1762 | | |
1696 | 1763 | | |
| |||
1729 | 1796 | | |
1730 | 1797 | | |
1731 | 1798 | | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
1732 | 1804 | | |
1733 | 1805 | | |
1734 | 1806 | | |
| |||
1743 | 1815 | | |
1744 | 1816 | | |
1745 | 1817 | | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
1746 | 1823 | | |
1747 | 1824 | | |
1748 | 1825 | | |
| |||
1767 | 1844 | | |
1768 | 1845 | | |
1769 | 1846 | | |
| 1847 | + | |
1770 | 1848 | | |
1771 | 1849 | | |
| 1850 | + | |
1772 | 1851 | | |
1773 | 1852 | | |
1774 | 1853 | | |
| |||
1963 | 2042 | | |
1964 | 2043 | | |
1965 | 2044 | | |
| 2045 | + | |
| 2046 | + | |
1966 | 2047 | | |
1967 | 2048 | | |
1968 | 2049 | | |
| |||
2067 | 2148 | | |
2068 | 2149 | | |
2069 | 2150 | | |
| 2151 | + | |
| 2152 | + | |
2070 | 2153 | | |
2071 | 2154 | | |
2072 | 2155 | | |
| |||
2144 | 2227 | | |
2145 | 2228 | | |
2146 | 2229 | | |
| 2230 | + | |
2147 | 2231 | | |
| 2232 | + | |
| 2233 | + | |
| 2234 | + | |
| 2235 | + | |
| 2236 | + | |
| 2237 | + | |
| 2238 | + | |
2148 | 2239 | | |
2149 | 2240 | | |
2150 | 2241 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
70 | 96 | | |
71 | 97 | | |
72 | 98 | | |
| |||
518 | 544 | | |
519 | 545 | | |
520 | 546 | | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
521 | 553 | | |
522 | 554 | | |
523 | 555 | | |
| |||
530 | 562 | | |
531 | 563 | | |
532 | 564 | | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
533 | 571 | | |
534 | 572 | | |
535 | 573 | | |
| |||
540 | 578 | | |
541 | 579 | | |
542 | 580 | | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
543 | 586 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | 7 | | |
19 | 8 | | |
20 | 9 | | |
| |||
141 | 130 | | |
142 | 131 | | |
143 | 132 | | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
144 | 192 | | |
145 | 193 | | |
146 | 194 | | |
| |||
0 commit comments