diff options
| -rw-r--r-- | source3/lib/messages.c | 2 | ||||
| -rw-r--r-- | source3/smbd/connection.c | 3 | ||||
| -rw-r--r-- | source3/smbd/service.c | 60 | 
3 files changed, 28 insertions, 37 deletions
diff --git a/source3/lib/messages.c b/source3/lib/messages.c index 8f181f0982..7a0343b249 100644 --- a/source3/lib/messages.c +++ b/source3/lib/messages.c @@ -374,7 +374,7 @@ static int traverse_fn(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void  	memcpy(&crec, dbuf.dptr, sizeof(crec)); -	if (crec.cnum == -1) return 0; +	if (crec.cnum != -1) return 0;  	message_send_pid(crec.pid, msg_all.msg_type, msg_all.buf, msg_all.len, msg_all.duplicates);  	return 0;  } diff --git a/source3/smbd/connection.c b/source3/smbd/connection.c index 6e088f9f8f..cf455c0a8b 100644 --- a/source3/smbd/connection.c +++ b/source3/smbd/connection.c @@ -72,9 +72,6 @@ BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOO  	struct connections_data crec;  	TDB_DATA kbuf, dbuf; -	if (max_connections <= 0) -		return(True); -  	if (!tdb) {  		tdb = tdb_open(lock_path("connections.tdb"), 0, TDB_CLEAR_IF_FIRST,   			       O_RDWR | O_CREAT, 0644); diff --git a/source3/smbd/service.c b/source3/smbd/service.c index fcdd9a376b..ba381a40e8 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -452,27 +452,25 @@ connection_struct *make_connection(char *service,char *user,char *password, int  	conn->ngroups = 0;  	conn->groups = NULL; -	if (!IS_IPC(conn)) { -		/* Find all the groups this uid is in and -		   store them. Used by become_user() */ -		initialise_groups(conn->user, conn->uid, conn->gid);  -		get_current_groups(&conn->ngroups,&conn->groups); +	/* Find all the groups this uid is in and +	   store them. Used by become_user() */ +	initialise_groups(conn->user, conn->uid, conn->gid);  +	get_current_groups(&conn->ngroups,&conn->groups); -		/* check number of connections */ -		if (!claim_connection(conn, -				      lp_servicename(SNUM(conn)), -				      lp_max_connections(SNUM(conn)), -				      False)) { -			DEBUG(1,("too many connections - rejected\n")); -			*ecode = ERRnoresource; -			conn_free(conn); -			return NULL; -		}   +	/* check number of connections */ +	if (!claim_connection(conn, +			      lp_servicename(SNUM(conn)), +			      lp_max_connections(SNUM(conn)), +			      False)) { +		DEBUG(1,("too many connections - rejected\n")); +		*ecode = ERRnoresource; +		conn_free(conn); +		return NULL; +	}   -		if (lp_status(SNUM(conn))) -			claim_connection(conn,"", -					 MAXSTATUS,False); -	} /* IS_IPC */ +	if (lp_status(SNUM(conn))) +		claim_connection(conn,"", +				 MAXSTATUS,False);  	conn->nt_user_token = create_nt_token(conn->uid, conn->gid, conn->ngroups, conn->groups); @@ -519,13 +517,11 @@ connection_struct *make_connection(char *service,char *user,char *password, int  	if (!become_user(conn, conn->vuid)) {  		DEBUG(0,("Can't become connected user!\n")); -		if (!IS_IPC(conn)) { -			yield_connection(conn, -					 lp_servicename(SNUM(conn)), -					 lp_max_connections(SNUM(conn))); -			if (lp_status(SNUM(conn))) { -				yield_connection(conn,"",MAXSTATUS); -			} +		yield_connection(conn, +				 lp_servicename(SNUM(conn)), +				 lp_max_connections(SNUM(conn))); +		if (lp_status(SNUM(conn))) { +			yield_connection(conn,"",MAXSTATUS);  		}  		conn_free(conn);  		*ecode = ERRbadpw; @@ -536,13 +532,11 @@ connection_struct *make_connection(char *service,char *user,char *password, int  		DEBUG(0,("Can't change directory to %s (%s)\n",  			 conn->connectpath,strerror(errno)));  		unbecome_user(); -		if (!IS_IPC(conn)) { -			yield_connection(conn, -					 lp_servicename(SNUM(conn)), -					 lp_max_connections(SNUM(conn))); -			if (lp_status(SNUM(conn)))  -				yield_connection(conn,"",MAXSTATUS); -		} +		yield_connection(conn, +				 lp_servicename(SNUM(conn)), +				 lp_max_connections(SNUM(conn))); +		if (lp_status(SNUM(conn)))  +			yield_connection(conn,"",MAXSTATUS);  		conn_free(conn);  		*ecode = ERRnosuchshare;  		return NULL;  | 
