Commit 3166183
committed
Bug 39116277 - [38668667->25.09] Extend TCP Proxy TcpProcessor thread Spinning on 0-Byte Read on Closed Sockets causing High CPU
Bug 38668667 - Extend TCP Proxy TcpProcessor thread Spinning on 0-Byte Read on Closed Sockets causing High CPU.
Issue:
- When a client sends a partial TLS record and closes the connection, the server receives incomplete encrypted data.
- SSLEngine.unwrap() cannot decrypt the record and returns BUFFER_UNDERFLOW because more bytes are required.
- Since the socket has already reached EOS, no additional data can arrive to complete the TLS record.
- The remaining encrypted bytes may keep the channel marked readable, causing the connection to be processed repeatedly.
Fix:
- Updated the read logic to return -1 when the socket has reached EOS, no bytes were produced for the caller buffer (cbFill == 0), and no decrypted bytes remain in the clear buffer.
- The code also checks that fillClearBuffer() returns 0, ensuring that no additional bytes can be decrypted from the remaining encrypted data.
- This indicates that the remaining data if present in Encyrpted Buffer is likely a partial TLS record that cannot be completed.
- Returning -1 signals end-of-stream and allows the TcpProcessor to close the connection, preventing repeated processing of the same socket.
[git-p4: depot-paths = "//dev/coherence-ce/main/": change = 119310]1 parent 3728bff commit 3166183
File tree
2 files changed
+101
-13
lines changed- prj
- coherence-core/src/main/java/com/oracle/coherence/common/internal/net/ssl
- test/functional/extend/src/main/java/extend
2 files changed
+101
-13
lines changedLines changed: 8 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
436 | 436 | | |
437 | 437 | | |
438 | 438 | | |
439 | | - | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | | - | |
444 | | - | |
445 | | - | |
446 | | - | |
447 | | - | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
448 | 446 | | |
449 | 447 | | |
450 | 448 | | |
| |||
Lines changed: 93 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
10 | 19 | | |
11 | 20 | | |
12 | 21 | | |
| 22 | + | |
13 | 23 | | |
| 24 | + | |
| 25 | + | |
14 | 26 | | |
15 | 27 | | |
16 | 28 | | |
| |||
38 | 50 | | |
39 | 51 | | |
40 | 52 | | |
41 | | - | |
| 53 | + | |
42 | 54 | | |
43 | | - | |
| 55 | + | |
| 56 | + | |
44 | 57 | | |
45 | 58 | | |
46 | 59 | | |
| |||
51 | 64 | | |
52 | 65 | | |
53 | 66 | | |
| 67 | + | |
| 68 | + | |
| 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 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
54 | 144 | | |
0 commit comments