From 9e007457e4aa0ed8656782be1b8af42fc217614b Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 14 Jan 2002 19:34:28 +0000 Subject: Removed MAXSTATUS which was set incorrectly - thus causing tdb traversal of the connections db on smbd startup. This should fix the Solaris large load bug.... (fingers crossed). Jeremy. (This used to be commit 5b2b9c25af28543e67762805d1387524cbb6c39d) --- source3/include/local.h | 3 ++- source3/printing/printing.c | 8 +++----- source3/smbd/connection.c | 2 +- source3/smbd/server.c | 25 +++++++++---------------- source3/smbd/service.c | 14 ++++---------- 5 files changed, 19 insertions(+), 33 deletions(-) diff --git a/source3/include/local.h b/source3/include/local.h index da9fee0564..c7abe207c8 100644 --- a/source3/include/local.h +++ b/source3/include/local.h @@ -68,7 +68,8 @@ #endif /* the max number of simultanous connections to the server by all clients */ -#define MAXSTATUS 100000 +/* zero means no limit. */ +#define MAXSTATUS 0 #define WORDMAX 0xFFFF diff --git a/source3/printing/printing.c b/source3/printing/printing.c index 08115cdb79..339ca721c6 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -507,15 +507,13 @@ void start_background_queue(void) /* Child. */ DEBUG(5,("start_background_queue: background LPQ thread started\n")); - claim_connection(NULL,"smbd lpq backend",MAXSTATUS,False); + claim_connection(NULL,"smbd lpq backend",0,False); - if (!locking_init(0)) { + if (!locking_init(0)) exit(1); - } - if (!print_backend_init()) { + if (!print_backend_init()) exit(1); - } message_register(MSG_PRINTER_UPDATE, print_queue_receive); diff --git a/source3/smbd/connection.c b/source3/smbd/connection.c index c0eaf8187d..da904e0a04 100644 --- a/source3/smbd/connection.c +++ b/source3/smbd/connection.c @@ -37,7 +37,7 @@ TDB_CONTEXT *conn_tdb_ctx(void) Delete a connection record. ****************************************************************************/ -BOOL yield_connection(connection_struct *conn,char *name,int max_connections) +BOOL yield_connection(connection_struct *conn,char *name) { struct connections_key key; TDB_DATA kbuf; diff --git a/source3/smbd/server.c b/source3/smbd/server.c index b8e9c2beae..330feece91 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -494,7 +494,7 @@ void exit_server(char *reason) invalidate_all_vuids(); /* delete our entry in the connections database. */ - yield_connection(NULL,"",MAXSTATUS); + yield_connection(NULL,""); respond_to_all_remaining_local_messages(); decrement_smbd_process_count(); @@ -812,7 +812,7 @@ static void usage(char *pname) register_dmalloc_msgs(); /* Setup the main smbd so that we can get messages. */ - claim_connection(NULL,"",MAXSTATUS,True); + claim_connection(NULL,"",0,True); /* DO NOT ENABLE THIS TILL YOU COPE WITH KILLING THESE TASKS AND INETD @@ -828,21 +828,17 @@ static void usage(char *pname) * everything after this point is run after the fork() */ - if (!locking_init(0)) { + if (!locking_init(0)) exit(1); - } - if (!print_backend_init()) { + if (!print_backend_init()) exit(1); - } - if (!share_info_db_init()) { + if (!share_info_db_init()) exit(1); - } - if(!initialize_password_db(False)) { + if(!initialize_password_db(False)) exit(1); - } /* possibly reload the services file. */ reload_services(True); @@ -868,19 +864,16 @@ static void usage(char *pname) } /* Setup oplocks */ - if (!init_oplocks()) { + if (!init_oplocks()) exit(1); - } /* Setup mangle */ - if (!init_mangle_tdb()) { + if (!init_mangle_tdb()) exit(1); - } /* Setup change notify */ - if (!init_change_notify()) { + if (!init_change_notify()) exit(1); - } smbd_process(); diff --git a/source3/smbd/service.c b/source3/smbd/service.c index 8218ca2dc5..120868f24a 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -588,9 +588,7 @@ connection_struct *make_connection(char *service, DATA_BLOB password, ret = smbrun(cmd,NULL); if (ret != 0 && lp_rootpreexec_close(SNUM(conn))) { DEBUG(1,("root preexec gave %d - failing connection\n", ret)); - yield_connection(conn, - lp_servicename(SNUM(conn)), - lp_max_connections(SNUM(conn))); + yield_connection(conn, lp_servicename(SNUM(conn))); conn_free(conn); *status = NT_STATUS_UNSUCCESSFUL; return NULL; @@ -619,7 +617,7 @@ connection_struct *make_connection(char *service, DATA_BLOB password, if (ret != 0 && lp_preexec_close(SNUM(conn))) { DEBUG(1,("preexec gave %d - failing connection\n", ret)); change_to_root_user(); - yield_connection(conn, lp_servicename(SNUM(conn)), lp_max_connections(SNUM(conn))); + yield_connection(conn, lp_servicename(SNUM(conn))); conn_free(conn); *status = NT_STATUS_UNSUCCESSFUL; return NULL; @@ -631,9 +629,7 @@ connection_struct *make_connection(char *service, DATA_BLOB password, remote_machine, conn->client_address, conn->connectpath,strerror(errno))); change_to_root_user(); - yield_connection(conn, - lp_servicename(SNUM(conn)), - lp_max_connections(SNUM(conn))); + yield_connection(conn, lp_servicename(SNUM(conn))); conn_free(conn); *status = NT_STATUS_BAD_NETWORK_NAME; return NULL; @@ -713,9 +709,7 @@ void close_cnum(connection_struct *conn, uint16 vuid) } - yield_connection(conn, - lp_servicename(SNUM(conn)), - lp_max_connections(SNUM(conn))); + yield_connection(conn, lp_servicename(SNUM(conn))); file_close_conn(conn); dptr_closecnum(conn); -- cgit