File tree Expand file tree Collapse file tree
main/java/org/apache/hc/core5/util
test/java/org/apache/hc/core5/util Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -83,9 +83,8 @@ public class Deadline {
8383 */
8484 public static Deadline calculate (final long timeMillis , final TimeValue timeValue ) {
8585 if (TimeValue .isPositive (timeValue )) {
86- // TODO handle unlikely overflow
87- final long deadline = timeMillis + timeValue .toMilliseconds ();
88- return deadline < 0 ? Deadline .MAX_VALUE : Deadline .fromUnixMilliseconds (deadline );
86+ return Deadline .fromUnixMilliseconds (timeMillis +
87+ Math .min (timeValue .toMilliseconds (), Long .MAX_VALUE - timeMillis ));
8988 }
9089 return Deadline .MAX_VALUE ;
9190 }
Original file line number Diff line number Diff line change @@ -130,4 +130,14 @@ void testValue() {
130130 final Deadline deadline = Deadline .fromUnixMilliseconds (nowPlusOneMin );
131131 Assertions .assertEquals (nowPlusOneMin , deadline .getValue ());
132132 }
133+
134+ @ Test
135+ void testOverflowHandling () {
136+ final long currentTime = Long .MAX_VALUE - 5000 ; // Simulate close to overflow
137+ final TimeValue tenSeconds = TimeValue .ofMilliseconds (10000 ); // 10 seconds
138+ final Deadline deadline = Deadline .calculate (currentTime , tenSeconds );
139+
140+ Assertions .assertEquals (Deadline .MAX_VALUE , deadline ,
141+ "Overflow should result in the maximum deadline value." );
142+ }
133143}
You can’t perform that action at this time.
0 commit comments