- mtime_t system;
- if (input_GetPcrSystem(sys->input, &system))
- goto wait;
-
- /* Send clock request to the master */
- data[0] = hton64(system);
-
- const mtime_t send_date = mdate();
- if (send(sys->fd, data, sizeof(data[0]), 0) <= 0)
- goto wait;
-
- /* Don't block */
- int ret = poll(&ufd, 1, sys->timeout);
- if (ret == 0)
- return;
- if (ret < 0)
- goto wait;
-
- const mtime_t receive_date = mdate();
- if (recv(sys->fd, data, sizeof(data), 0) <= 0)
- goto wait;
-
- const mtime_t master_date = ntoh64(data[0]);
- const mtime_t master_system = ntoh64(data[1]);
- const mtime_t diff_date = receive_date -
- ((receive_date - send_date) / 2 + master_date);
-
- if (master_system > 0) {
- mtime_t client_system;
- if (input_GetPcrSystem(sys->input, &client_system))
+ for (;;) {
+ struct pollfd ufd = { .fd = sys->fd, .events = POLLIN, };
+ uint64_t data[2];
+
+ mtime_t system = GetPcrSystem(sys->input);
+ if (system < 0)