Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP6
chrony.16730
chrony-gettimeofday.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File chrony-gettimeofday.patch of Package chrony.16730
From 6863e43269fe27ce2744eb643295f31c00ec176d Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar <mlichvar@redhat.com> Date: Tue, 12 Dec 2017 11:03:04 +0100 Subject: [PATCH] client: avoid reading clock after sending request If chronyc sent a request which caused chronyd to step the clock (e.g. makestep, settime) and the second reading of the clock before calling select() to wait for a response happened after the clock was stepped, a new request could be sent immediately and chronyd would process the same command twice. If the second request failed (e.g. a settime request too close to the first request), chronyc would report an error. Change the submit_request() function to read the clock only once per select() to wait for the first response even when the clock was stepped. --- client.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/client.c b/client.c index a04dcb8..7d1e346 100644 --- a/client.c +++ b/client.c @@ -1347,15 +1347,15 @@ submit_request(CMD_Request *request, CMD_Reply *reply) new_attempt = 1; do { + if (gettimeofday(&tv, NULL)) + return 0; + if (new_attempt) { new_attempt = 0; if (n_attempts > max_retries) return 0; - if (gettimeofday(&tv, NULL)) - return 0; - UTI_TimevalToTimespec(&tv, &ts_start); UTI_GetRandomBytes(&request->sequence, sizeof (request->sequence)); @@ -1383,9 +1383,6 @@ submit_request(CMD_Request *request, CMD_Reply *reply) DEBUG_LOG("Sent %d bytes", command_length); } - if (gettimeofday(&tv, NULL)) - return 0; - UTI_TimevalToTimespec(&tv, &ts_now); /* Check if the clock wasn't stepped back */ -- 2.16.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor