diff options
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/connection.c | 3 | ||||
-rw-r--r-- | source3/smbd/service.c | 60 |
2 files changed, 27 insertions, 36 deletions
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; |