summaryrefslogtreecommitdiff
path: root/sql/mysqld.cc
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2002-04-25 01:16:42 +0300
committerunknown <monty@hundin.mysql.fi>2002-04-25 01:16:42 +0300
commit0a03601fab2174e2a7590ff36d4ce2aee08adc5f (patch)
tree539e3f41736108728458d901c552313e5f058e8f /sql/mysqld.cc
parenta56d1215f52b8d6ed9428b358034f439e03cbf5b (diff)
parent64cc56125791c5e3773399b6d3a40be81510b460 (diff)
downloadmariadb-git-0a03601fab2174e2a7590ff36d4ce2aee08adc5f.tar.gz
merge
BitKeeper/etc/logging_ok: auto-union configure.in: Auto merged BitKeeper/deleted/.del-identity.result~e41453a364242503: Auto merged BitKeeper/deleted/.del-identity.test~326f469b59105404: Auto merged include/my_pthread.h: Auto merged innobase/dict/dict0crea.c: Auto merged innobase/dict/dict0dict.c: Auto merged innobase/dict/dict0load.c: Auto merged innobase/include/univ.i: Auto merged innobase/lock/lock0lock.c: Auto merged innobase/pars/pars0opt.c: Auto merged innobase/que/que0que.c: Auto merged innobase/row/row0ins.c: Auto merged innobase/row/row0mysql.c: Auto merged innobase/row/row0sel.c: Auto merged innobase/row/row0upd.c: Auto merged innobase/srv/srv0srv.c: Auto merged innobase/sync/sync0sync.c: Auto merged innobase/trx/trx0trx.c: Auto merged libmysql/libmysql.c: Auto merged myisam/myisampack.c: Auto merged mysql-test/t/func_test.test: Auto merged mysql-test/t/show_check.test: Auto merged mysql-test/t/variables.test: Auto merged mysys/my_pthread.c: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_func.cc: Auto merged sql/mysql_priv.h: Auto merged sql/share/danish/errmsg.txt: Auto merged sql/share/english/errmsg.txt: Auto merged sql/share/french/errmsg.txt: Auto merged sql/share/german/errmsg.txt: Auto merged sql/share/greek/errmsg.txt: Auto merged sql/share/hungarian/errmsg.txt: Auto merged sql/sql_show.cc: Auto merged sql/share/italian/errmsg.txt: Auto merged sql/share/japanese/errmsg.txt: Auto merged sql/share/korean/errmsg.txt: Auto merged sql/share/norwegian-ny/errmsg.txt: Auto merged sql/share/norwegian/errmsg.txt: Auto merged sql/share/polish/errmsg.txt: Auto merged sql/share/portuguese/errmsg.txt: Auto merged sql/share/romanian/errmsg.txt: Auto merged sql/share/russian/errmsg.txt: Auto merged sql/share/slovak/errmsg.txt: Auto merged sql/share/spanish/errmsg.txt: Auto merged sql/share/swedish/errmsg.txt: Auto merged sql/share/ukrainian/errmsg.txt: Auto merged
Diffstat (limited to 'sql/mysqld.cc')
-rw-r--r--sql/mysqld.cc46
1 files changed, 24 insertions, 22 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 3f57d12559d..b660781162f 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -101,6 +101,16 @@ extern "C" { // Because of SCO 3.2V4.2
#endif /* NEED_SYS_SYSLOG_H */
int allow_severity = LOG_INFO;
int deny_severity = LOG_WARNING;
+
+#ifdef __linux__
+#define my_fromhost(A) fromhost()
+#define my_hosts_access(A) hosts_access()
+#define my_eval_client(A) eval_client()
+#else
+#define my_fromhost(A) fromhost(A)
+#define my_hosts_access(A) hosts_access(A)
+#define my_eval_client(A) eval_client(A)
+#endif
#endif /* HAVE_LIBWRAP */
#ifdef HAVE_SYS_MMAN_H
@@ -984,24 +994,22 @@ static void server_init(void)
IPaddr.sin_addr.s_addr = my_bind_addr;
IPaddr.sin_port = (unsigned short) htons((unsigned short) mysql_port);
(void) setsockopt(ip_sock,SOL_SOCKET,SO_REUSEADDR,(char*)&arg,sizeof(arg));
- for(;;)
+ if (bind(ip_sock, my_reinterpret_cast(struct sockaddr *) (&IPaddr),
+ sizeof(IPaddr)) < 0)
{
- if (bind(ip_sock, my_reinterpret_cast(struct sockaddr *) (&IPaddr),
- sizeof(IPaddr)) >= 0)
- break;
DBUG_PRINT("error",("Got error: %d from bind",socket_errno));
- sql_perror("Can't start server: Bind on TCP/IP port");/* Had a loop here */
+ sql_perror("Can't start server: Bind on TCP/IP port");
sql_print_error("Do you already have another mysqld server running on port: %d ?",mysql_port);
unireg_abort(1);
}
if (listen(ip_sock,(int) back_log) < 0)
{
+ sql_perror("Can't start server: listen() on TCP/IP port");
sql_print_error("Error: listen() on TCP/IP failed with error %d",
socket_errno);
unireg_abort(1);
}
}
-
if (mysqld_chroot)
set_root(mysqld_chroot);
set_user(mysqld_user); // Works also with mysqld_user==NULL
@@ -2332,7 +2340,6 @@ static void create_new_thread(THD *thd)
if (cached_thread_count > wake_thread)
{
start_cached_thread(thd);
- (void) pthread_mutex_unlock(&LOCK_thread_count);
}
else
{
@@ -2359,9 +2366,9 @@ static void create_new_thread(THD *thd)
(void) pthread_mutex_unlock(&LOCK_thread_count);
DBUG_VOID_RETURN;
}
-
- (void) pthread_mutex_unlock(&LOCK_thread_count);
}
+ (void) pthread_mutex_unlock(&LOCK_thread_count);
+
}
DBUG_PRINT("info",("Thread created"));
DBUG_VOID_RETURN;
@@ -2505,24 +2512,16 @@ pthread_handler_decl(handle_connections_sockets,arg __attribute__((unused)))
struct request_info req;
signal(SIGCHLD, SIG_DFL);
request_init(&req, RQ_DAEMON, libwrapName, RQ_FILE, new_sock, NULL);
-#ifndef __linux__
- fromhost(&req);
- if (!hosts_access(&req))
+ my_fromhost(&req);
+ if (!my_hosts_access(&req))
{
/*
This may be stupid but refuse() includes an exit(0)
which we surely don't want...
clean_exit() - same stupid thing ...
*/
- syslog(deny_severity, "refused connect from %s", eval_client(&req));
-#else
- fromhost();
- if (!hosts_access())
- {
- syslog(deny_severity, "refused connect from %s", eval_client());
-#endif
- if (req.sink)
- ((void (*)(int))req.sink)(req.fd);
+ syslog(deny_severity, "refused connect from %s",
+ my_eval_client(&req));
/*
C++ sucks (the gibberish in front just translates the supplied
@@ -2530,7 +2529,10 @@ pthread_handler_decl(handle_connections_sockets,arg __attribute__((unused)))
to a void(*sink)(int) if you omit the cast, the C++ compiler
will cry...
*/
- (void) shutdown(new_sock,2); // This looks fine to me...
+ if (req.sink)
+ ((void (*)(int))req.sink)(req.fd);
+
+ (void) shutdown(new_sock,2);
(void) closesocket(new_sock);
continue;
}