[SCM] Samba Shared Repository - branch master updated

Rusty Russell rusty at samba.org
Wed Jun 1 03:48:02 MDT 2011


The branch, master has been updated
       via  e340cd8 lib/tevent/tevent.h: minor documentation fix.
       via  c29069e libcli/cldap/cldap.c: don't hand huge values to tevent_timeval_add usecs
       via  0204ae6 lib/util/time.c: timeval_current_ofs_usec
       via  56e7233 lib/util/time.c: timeval_current_ofs_msec
      from  9bd695c samba-tool: update tests for new 'user enable' syntax

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e340cd83f87a9ea02cacd9af520d154652c5afb1
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Wed Jun 1 12:20:11 2011 +0930

    lib/tevent/tevent.h: minor documentation fix.
    
    The usecs arguments are (of course) microseconds, not milliseconds.
    This was added by Andreas Schneider in 6c1bcdc2 (tevent: Document the
    tevent helper functions.).
    
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
    
    Autobuild-User: Rusty Russell <rusty at rustcorp.com.au>
    Autobuild-Date: Wed Jun  1 11:47:38 CEST 2011 on sn-devel-104

commit c29069e079018853867d643b8de604edd95c94d9
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Wed Jun 1 12:20:08 2011 +0930

    libcli/cldap/cldap.c: don't hand huge values to tevent_timeval_add usecs
    
    state->request.delay is two million here, resulting in an invalid timeval.
    Since tevent doesn't have a convenient wrapper to add arbitrary usecs,
    do the arithmetic here (it's the sole caller of this function).
    
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>

commit 0204ae6229bae3573b3194c3f657c8f385c0b940
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Wed Jun 1 11:24:51 2011 +0930

    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 at rustcorp.com.au>

commit 56e72337b01216dc7cba418f040a5cc928e5fc6f
Author: Rusty Russell <rusty at rustcorp.com.au>
Date:   Wed Jun 1 11:21:15 2011 +0930

    lib/util/time.c: timeval_current_ofs_msec
    
    Several places want "milliseconds from current time", and several were
    simply doing "msec * 1000" which can (and does in one place) result in
    a usec value over 1 a million.
    
    Using a helper to do this is safer and more readable.
    
    Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>

-----------------------------------------------------------------------

Summary of changes:
 lib/tevent/tevent.h                        |    6 +++---
 lib/util/time.c                            |   18 ++++++++++++++++++
 lib/util/time.h                            |   10 ++++++++++
 libcli/cldap/cldap.c                       |    6 ++++--
 source3/lib/util_sock.c                    |   14 +++++++-------
 source3/libsmb/async_smb.c                 |    3 +--
 source3/nmbd/nmbd_processlogon.c           |    3 +--
 source3/rpc_client/rpc_transport_tstream.c |    6 +++---
 source3/smbd/blocking.c                    |    3 +--
 source3/smbd/fileio.c                      |    2 +-
 source3/smbd/smb2_lock.c                   |    4 +---
 source4/lib/socket/connect_multi.c         |    2 +-
 source4/libcli/raw/clitransport.c          |    2 +-
 source4/ntvfs/posix/pvfs_lock.c            |    3 +--
 source4/ntvfs/posix/pvfs_open.c            |    2 +-
 source4/ntvfs/posix/pvfs_write.c           |    2 +-
 16 files changed, 55 insertions(+), 31 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h
index f4eb60c..38a4a9c 100644
--- a/lib/tevent/tevent.h
+++ b/lib/tevent/tevent.h
@@ -1218,7 +1218,7 @@ struct timeval tevent_timeval_current(void);
  *
  * @param[in]  secs     The seconds to set.
  *
- * @param[in]  usecs    The milliseconds to set.
+ * @param[in]  usecs    The microseconds to set.
  *
  * @return              A timeval structure with the given values.
  */
@@ -1253,7 +1253,7 @@ bool tevent_timeval_is_zero(const struct timeval *tv);
  *
  * @param[in]  secs      The seconds to add to the timeval.
  *
- * @param[in]  usecs     The milliseconds to add to the timeval.
+ * @param[in]  usecs     The microseconds to add to the timeval.
  *
  * @return               The timeval structure with the new time.
  */
@@ -1265,7 +1265,7 @@ struct timeval tevent_timeval_add(const struct timeval *tv, uint32_t secs,
  *
  * @param[in]  secs     The seconds of the offset from now.
  *
- * @param[in]  usecs    The milliseconds of the offset from now.
+ * @param[in]  usecs    The microseconds of the offset from now.
  *
  * @return              A timval with the given offset in the future.
  */
diff --git a/lib/util/time.c b/lib/util/time.c
index 4843fc9..d8fd4a3 100644
--- a/lib/util/time.c
+++ b/lib/util/time.c
@@ -580,6 +580,24 @@ _PUBLIC_ struct timeval timeval_current_ofs(uint32_t secs, uint32_t usecs)
 }
 
 /**
+  return a timeval milliseconds into the future
+*/
+_PUBLIC_ struct timeval timeval_current_ofs_msec(uint32_t msecs)
+{
+	struct timeval tv = timeval_current();
+	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
   Return 0 if tv1 == tv2
diff --git a/lib/util/time.h b/lib/util/time.h
index 3a40634..1f7f57d 100644
--- a/lib/util/time.h
+++ b/lib/util/time.h
@@ -213,6 +213,16 @@ struct timeval timeval_sum(const struct timeval *tv1,
 _PUBLIC_ struct timeval timeval_current_ofs(uint32_t secs, uint32_t usecs);
 
 /**
+  return a timeval milliseconds into the future
+*/
+_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
   Return 0 if tv1 == tv2
diff --git a/libcli/cldap/cldap.c b/libcli/cldap/cldap.c
index f5585c2..37b4f49 100644
--- a/libcli/cldap/cldap.c
+++ b/libcli/cldap/cldap.c
@@ -626,7 +626,8 @@ struct tevent_req *cldap_search_send(TALLOC_CTX *mem_ctx,
 	now = tevent_timeval_current();
 	end = now;
 	for (i = 0; i < state->request.count; i++) {
-		end = tevent_timeval_add(&end, 0, state->request.delay);
+		end = tevent_timeval_add(&end, state->request.delay / 1000000,
+					 state->request.delay % 1000000);
 	}
 
 	if (!tevent_req_set_endtime(req, state->caller.cldap->event.ctx, end)) {
@@ -688,7 +689,8 @@ static void cldap_search_state_queue_done(struct tevent_req *subreq)
 		return;
 	}
 
-	next = tevent_timeval_current_ofs(0, state->request.delay);
+	next = tevent_timeval_current_ofs(state->request.delay / 1000000,
+					  state->request.delay % 1000000);
 	subreq = tevent_wakeup_send(state,
 				    state->caller.cldap->event.ctx,
 				    next);
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index 5d20d74..5b01d11 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -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;
 		}
diff --git a/source3/libsmb/async_smb.c b/source3/libsmb/async_smb.c
index 3ed3871..8fdcac4 100644
--- a/source3/libsmb/async_smb.c
+++ b/source3/libsmb/async_smb.c
@@ -340,8 +340,7 @@ struct tevent_req *cli_smb_req_create(TALLOC_CTX *mem_ctx,
 	state->iov_count = iov_count + 3;
 
 	if (cli->timeout) {
-		endtime = timeval_current_ofs(cli->timeout / 1000,
-					      (cli->timeout % 1000) * 1000);
+		endtime = timeval_current_ofs_msec(cli->timeout);
 		if (!tevent_req_set_endtime(result, ev, endtime)) {
 			tevent_req_nomem(NULL, result);
 		}
diff --git a/source3/nmbd/nmbd_processlogon.c b/source3/nmbd/nmbd_processlogon.c
index 790e1c3..25cdcc6 100644
--- a/source3/nmbd/nmbd_processlogon.c
+++ b/source3/nmbd/nmbd_processlogon.c
@@ -604,8 +604,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) ));
 				  source_name, source_addr,
 				  lp_init_logon_delay()));
 
-			when = timeval_current_ofs(0,
-				lp_init_logon_delay() * 1000);
+			when = timeval_current_ofs_msec(lp_init_logon_delay());
 			p->locked = true;
 			event_add_timed(nmbd_event_context(),
 					NULL,
diff --git a/source3/rpc_client/rpc_transport_tstream.c b/source3/rpc_client/rpc_transport_tstream.c
index e62ab4b..488c093 100644
--- a/source3/rpc_client/rpc_transport_tstream.c
+++ b/source3/rpc_client/rpc_transport_tstream.c
@@ -202,7 +202,7 @@ static struct tevent_req *rpc_tstream_read_send(TALLOC_CTX *mem_ctx,
 		return tevent_req_post(req, ev);
 	}
 
-	endtime = timeval_current_ofs(0, transp->timeout * 1000);
+	endtime = timeval_current_ofs_msec(transp->timeout);
 	if (!tevent_req_set_endtime(subreq, ev, endtime)) {
 		goto fail;
 	}
@@ -286,7 +286,7 @@ static struct tevent_req *rpc_tstream_write_send(TALLOC_CTX *mem_ctx,
 		goto fail;
 	}
 
-	endtime = timeval_current_ofs(0, transp->timeout * 1000);
+	endtime = timeval_current_ofs_msec(transp->timeout);
 	if (!tevent_req_set_endtime(subreq, ev, endtime)) {
 		goto fail;
 	}
@@ -374,7 +374,7 @@ static struct tevent_req *rpc_tstream_trans_send(TALLOC_CTX *mem_ctx,
 	state->req.iov_base = discard_const_p(void *, data);
 	state->max_rdata_len = max_rdata_len;
 
-	endtime = timeval_current_ofs(0, transp->timeout * 1000);
+	endtime = timeval_current_ofs_msec(transp->timeout);
 
 	subreq = tstream_writev_queue_send(state, ev,
 					   transp->stream,
diff --git a/source3/smbd/blocking.c b/source3/smbd/blocking.c
index ca4106b..fd77e3d 100644
--- a/source3/smbd/blocking.c
+++ b/source3/smbd/blocking.c
@@ -208,8 +208,7 @@ bool push_blocking_lock_request( struct byte_range_lock *br_lck,
 		blr->expire_time.tv_sec = 0;
 		blr->expire_time.tv_usec = 0; /* Never expire. */
 	} else {
-		blr->expire_time = timeval_current_ofs(lock_timeout/1000,
-					(lock_timeout % 1000) * 1000);
+		blr->expire_time = timeval_current_ofs_msec(lock_timeout);
 	}
 	blr->lock_num = lock_num;
 	blr->smblctx = smblctx;
diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c
index 5e0ea90..3b317f9 100644
--- a/source3/smbd/fileio.c
+++ b/source3/smbd/fileio.c
@@ -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);
 }
 
diff --git a/source3/smbd/smb2_lock.c b/source3/smbd/smb2_lock.c
index 7125584..5d615e1 100644
--- a/source3/smbd/smb2_lock.c
+++ b/source3/smbd/smb2_lock.c
@@ -628,9 +628,7 @@ bool push_blocking_lock_request_smb2( struct byte_range_lock *br_lck,
 		blr->expire_time.tv_sec = 0;
 		blr->expire_time.tv_usec = 0; /* Never expire. */
 	} else {
-		blr->expire_time = timeval_current_ofs(
-			lock_timeout/1000,
-			(lock_timeout % 1000) * 1000);
+		blr->expire_time = timeval_current_ofs_msec(lock_timeout);
 	}
 
 	blr->lock_num = lock_num;
diff --git a/source4/lib/socket/connect_multi.c b/source4/lib/socket/connect_multi.c
index 300e5fb..e3b5845 100644
--- a/source4/lib/socket/connect_multi.c
+++ b/source4/lib/socket/connect_multi.c
@@ -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);
 	}
 }
diff --git a/source4/libcli/raw/clitransport.c b/source4/libcli/raw/clitransport.c
index 7a3993c..4331669 100644
--- a/source4/libcli/raw/clitransport.c
+++ b/source4/libcli/raw/clitransport.c
@@ -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);
 }
 
diff --git a/source4/ntvfs/posix/pvfs_lock.c b/source4/ntvfs/posix/pvfs_lock.c
index 76bc73d..0d99860 100644
--- a/source4/ntvfs/posix/pvfs_lock.c
+++ b/source4/ntvfs/posix/pvfs_lock.c
@@ -324,8 +324,7 @@ NTSTATUS pvfs_lock(struct ntvfs_module_context *ntvfs,
 		pending->req = req;
 
 		pending->end_time = 
-			timeval_current_ofs(lck->lockx.in.timeout/1000,
-					    1000*(lck->lockx.in.timeout%1000));
+			timeval_current_ofs_msec(lck->lockx.in.timeout);
 	}
 
 	if (lck->lockx.in.mode & LOCKING_ANDX_SHARED_LOCK) {
diff --git a/source4/ntvfs/posix/pvfs_open.c b/source4/ntvfs/posix/pvfs_open.c
index dfe2f2a..d56bce5 100644
--- a/source4/ntvfs/posix/pvfs_open.c
+++ b/source4/ntvfs/posix/pvfs_open.c
@@ -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;
diff --git a/source4/ntvfs/posix/pvfs_write.c b/source4/ntvfs/posix/pvfs_write.c
index fb629a8..892d3dd 100644
--- a/source4/ntvfs/posix/pvfs_write.c
+++ b/source4/ntvfs/posix/pvfs_write.c
@@ -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;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list