mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
lib/util/time.c: timeval_current_ofs_usec
Several places want "microseconds from current time", and several were
simply handing "usecs" values which could be over a million.
Using a helper to do this is safer and more readable.
I didn't replace any obviously correct callers (ie. constants).
I also renamed wait_nsec in source3/lib/util_sock.c; it's actually
microseconds not nanoseconds (introduced with this code in Volker's
19b783cc
Async wrapper for open_socket_out_send/recv).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
56e72337b0
commit
0204ae6229
@ -588,6 +588,15 @@ _PUBLIC_ struct timeval timeval_current_ofs_msec(uint32_t msecs)
|
||||
return timeval_add(&tv, msecs / 1000, (msecs % 1000) * 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
return a timeval microseconds into the future
|
||||
*/
|
||||
_PUBLIC_ struct timeval timeval_current_ofs_usec(uint32_t usecs)
|
||||
{
|
||||
struct timeval tv = timeval_current();
|
||||
return timeval_add(&tv, usecs / 1000000, usecs % 1000000);
|
||||
}
|
||||
|
||||
/**
|
||||
compare two timeval structures.
|
||||
Return -1 if tv1 < tv2
|
||||
|
@ -217,6 +217,11 @@ _PUBLIC_ struct timeval timeval_current_ofs(uint32_t secs, uint32_t usecs);
|
||||
*/
|
||||
_PUBLIC_ struct timeval timeval_current_ofs_msec(uint32_t msecs);
|
||||
|
||||
/**
|
||||
return a timeval microseconds into the future
|
||||
*/
|
||||
_PUBLIC_ struct timeval timeval_current_ofs_usec(uint32_t usecs);
|
||||
|
||||
/**
|
||||
compare two timeval structures.
|
||||
Return -1 if tv1 < tv2
|
||||
|
@ -524,7 +524,7 @@ struct open_socket_out_state {
|
||||
struct sockaddr_storage ss;
|
||||
socklen_t salen;
|
||||
uint16_t port;
|
||||
int wait_nsec;
|
||||
int wait_usec;
|
||||
};
|
||||
|
||||
static void open_socket_out_connected(struct tevent_req *subreq);
|
||||
@ -560,7 +560,7 @@ struct tevent_req *open_socket_out_send(TALLOC_CTX *mem_ctx,
|
||||
state->ev = ev;
|
||||
state->ss = *pss;
|
||||
state->port = port;
|
||||
state->wait_nsec = 10000;
|
||||
state->wait_usec = 10000;
|
||||
state->salen = -1;
|
||||
|
||||
state->fd = socket(state->ss.ss_family, SOCK_STREAM, 0);
|
||||
@ -571,7 +571,7 @@ struct tevent_req *open_socket_out_send(TALLOC_CTX *mem_ctx,
|
||||
talloc_set_destructor(state, open_socket_out_state_destructor);
|
||||
|
||||
if (!tevent_req_set_endtime(
|
||||
result, ev, timeval_current_ofs(0, timeout*1000))) {
|
||||
result, ev, timeval_current_ofs_msec(timeout))) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -608,7 +608,7 @@ struct tevent_req *open_socket_out_send(TALLOC_CTX *mem_ctx,
|
||||
if ((subreq == NULL)
|
||||
|| !tevent_req_set_endtime(
|
||||
subreq, state->ev,
|
||||
timeval_current_ofs(0, state->wait_nsec))) {
|
||||
timeval_current_ofs(0, state->wait_usec))) {
|
||||
goto fail;
|
||||
}
|
||||
tevent_req_set_callback(subreq, open_socket_out_connected, result);
|
||||
@ -650,8 +650,8 @@ static void open_socket_out_connected(struct tevent_req *subreq)
|
||||
* retry
|
||||
*/
|
||||
|
||||
if (state->wait_nsec < 250000) {
|
||||
state->wait_nsec *= 1.5;
|
||||
if (state->wait_usec < 250000) {
|
||||
state->wait_usec *= 1.5;
|
||||
}
|
||||
|
||||
subreq = async_connect_send(state, state->ev, state->fd,
|
||||
@ -662,7 +662,7 @@ static void open_socket_out_connected(struct tevent_req *subreq)
|
||||
}
|
||||
if (!tevent_req_set_endtime(
|
||||
subreq, state->ev,
|
||||
timeval_current_ofs(0, state->wait_nsec))) {
|
||||
timeval_current_ofs_usec(state->wait_usec))) {
|
||||
tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
|
||||
return;
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ void trigger_write_time_update(struct files_struct *fsp)
|
||||
/* trigger the update 2 seconds later */
|
||||
fsp->update_write_time_event =
|
||||
event_add_timed(server_event_context(), NULL,
|
||||
timeval_current_ofs(0, delay),
|
||||
timeval_current_ofs_usec(delay),
|
||||
update_write_time_handler, fsp);
|
||||
}
|
||||
|
||||
|
@ -162,7 +162,7 @@ static void connect_multi_next_socket(struct composite_context *result)
|
||||
connect attempt state, so it will go away when this
|
||||
request completes */
|
||||
event_add_timed(result->event_ctx, state,
|
||||
timeval_current_ofs(0, MULTI_PORT_DELAY),
|
||||
timeval_current_ofs_usec(MULTI_PORT_DELAY),
|
||||
connect_multi_timer, result);
|
||||
}
|
||||
}
|
||||
|
@ -338,7 +338,7 @@ _PUBLIC_ void smbcli_transport_idle_handler(struct smbcli_transport *transport,
|
||||
|
||||
transport->socket->event.te = event_add_timed(transport->socket->event.ctx,
|
||||
transport,
|
||||
timeval_current_ofs(0, period),
|
||||
timeval_current_ofs_usec(period),
|
||||
idle_handler, transport);
|
||||
}
|
||||
|
||||
|
@ -1174,7 +1174,7 @@ static NTSTATUS pvfs_open_setup_retry(struct ntvfs_module_context *ntvfs,
|
||||
*final_timeout = timeval_add(&req->statistics.request_time,
|
||||
pvfs->oplock_break_timeout,
|
||||
0);
|
||||
end_time = timeval_current_ofs(0, (pvfs->sharing_violation_delay*4)/5);
|
||||
end_time = timeval_current_ofs_usec((pvfs->sharing_violation_delay*4)/5);
|
||||
end_time = timeval_min(final_timeout, &end_time);
|
||||
} else {
|
||||
return NT_STATUS_INTERNAL_ERROR;
|
||||
|
@ -64,7 +64,7 @@ static void pvfs_trigger_write_time_update(struct pvfs_file_handle *h)
|
||||
return;
|
||||
}
|
||||
|
||||
tv = timeval_current_ofs(0, pvfs->writetime_delay);
|
||||
tv = timeval_current_ofs_usec(pvfs->writetime_delay);
|
||||
|
||||
h->write_time.update_triggered = true;
|
||||
h->write_time.update_on_close = true;
|
||||
|
Loading…
Reference in New Issue
Block a user