[ https://issues.apache.org/jira/browse/ZOOKEEPER-2516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15435846#comment-15435846 ]
Patrick Hunt commented on ZOOKEEPER-2516: ----------------------------------------- Also see ZOOKEEPER-1626 - there seems to be quite a bit of discussion on that JIRA wrt this type of change. > C client calculates invalid time interval for pings et al > --------------------------------------------------------- > > Key: ZOOKEEPER-2516 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2516 > Project: ZooKeeper > Issue Type: Bug > Components: c client > Affects Versions: 3.4.0, 3.4.8, 3.5.0, 3.5.1, 3.6.0 > Reporter: Hadriel Kaplan > Priority: Minor > > The C-client has a function called {{calculate_interval()}} in > {{zookeeper.c}}, whose purpose is to determine the number of milliseconds > difference between a start and end time. > Unfortunately its logic is invalid, if the number of microseconds of the end > time happens to be less than the number of microseconds of the start time - > which it will be about half the time, since the end time could be in the next > second interval. Such a case would yield a very big negative number, making > the function return an invalid value. > Instead of re-creating the wheel, the {{calculate_interval()}} should use the > {{timersub()}} function from {{time.h}} if it's available - if it's not > #define'd, then #define it. (it's a macro, and the source code for it is > readily available) -- This message was sent by Atlassian JIRA (v6.3.4#6332)