diff options
author | unknown <bell@sanja.is.com.ua> | 2003-02-17 22:07:26 +0200 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2003-02-17 22:07:26 +0200 |
commit | 1b9b2c3091fc580bff82ca0630221eabd5628d6c (patch) | |
tree | 36d57cc3236865b15adff6a4d9784a9ddd977aa6 | |
parent | 65508b65ba04d499f900259d52d6b16be871ef4a (diff) | |
download | mariadb-git-1b9b2c3091fc580bff82ca0630221eabd5628d6c.tar.gz |
client port number added to SHOW PROCESSLIST (SCRUM?)
include/violite.h:
port added to reported parameters
libmysqld/lib_vio.c:
port added to reported parameters
sql/sql_class.h:
port added to reported parameters
sql/sql_parse.cc:
port added to reported parameters
sql/sql_show.cc:
SHOW PROCESSLIST will report port number if it is possible
vio/viosocket.c:
port added to reported parameters
-rw-r--r-- | include/violite.h | 4 | ||||
-rw-r--r-- | libmysqld/lib_vio.c | 2 | ||||
-rw-r--r-- | sql/sql_class.h | 3 | ||||
-rw-r--r-- | sql/sql_parse.cc | 7 | ||||
-rw-r--r-- | sql/sql_show.cc | 18 | ||||
-rw-r--r-- | vio/viosocket.c | 4 |
6 files changed, 25 insertions, 13 deletions
diff --git a/include/violite.h b/include/violite.h index 6c8ad1f4b69..f99bb521e23 100644 --- a/include/violite.h +++ b/include/violite.h @@ -95,7 +95,7 @@ my_socket vio_fd(Vio*vio); /* * Remote peer's address and name in text form. */ -my_bool vio_peer_addr(Vio* vio, char *buf); +my_bool vio_peer_addr(Vio* vio, char *buf, u_int16_t *port); /* Remotes in_addr */ @@ -119,7 +119,7 @@ my_bool vio_poll_read(Vio *vio,uint timeout); #define vio_keepalive(vio, set_keep_alive) (vio)->viokeepalive(vio, set_keep_alive) #define vio_should_retry(vio) (vio)->should_retry(vio) #define vio_close(vio) ((vio)->vioclose)(vio) -#define vio_peer_addr(vio, buf) (vio)->peer_addr(vio, buf) +#define vio_peer_addr(vio, buf, prt) (vio)->peer_addr(vio, buf, prt) #define vio_in_addr(vio, in) (vio)->in_addr(vio, in) #endif /* defined(HAVE_VIO) && !defined(DONT_MAP_VIO) */ diff --git a/libmysqld/lib_vio.c b/libmysqld/lib_vio.c index 29a70b7acbb..428df972372 100644 --- a/libmysqld/lib_vio.c +++ b/libmysqld/lib_vio.c @@ -204,7 +204,7 @@ my_socket vio_fd(Vio* vio) } -my_bool vio_peer_addr(Vio * vio, char *buf) +my_bool vio_peer_addr(Vio * vio, char *buf, u_int16_t *port) { return(0); } diff --git a/sql/sql_class.h b/sql/sql_class.h index 802052d553a..da341c64d50 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -350,8 +350,9 @@ public: db - currently selected database ip - client IP */ - char *host,*user,*priv_user,*db,*ip; + /* remote (peer) port */ + u_int16_t peer_port; /* Points to info-string that will show in SHOW PROCESSLIST */ const char *proc_info; /* points to host if host is available, otherwise points to ip */ diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 6249c769015..c5a87626691 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -482,7 +482,7 @@ check_connections(THD *thd) { char ip[30]; - if (vio_peer_addr(net->vio,ip)) + if (vio_peer_addr(net->vio, ip, &thd->peer_port)) return (ER_BAD_HOST_ERROR); if (!(thd->ip = my_strdup(ip,MYF(0)))) return (ER_OUT_OF_RESOURCES); @@ -512,8 +512,9 @@ check_connections(THD *thd) else /* Hostname given means that the connection was on a socket */ { DBUG_PRINT("info",("Host: %s",thd->host)); - thd->host_or_ip=thd->host; - thd->ip=0; + thd->host_or_ip= thd->host; + thd->ip= 0; + thd->peer_port= 0; bzero((char*) &thd->remote,sizeof(struct sockaddr)); } /* Ensure that wrong hostnames doesn't cause buffer overflows */ diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 4faee7d248f..9c3de1c4338 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1016,6 +1016,7 @@ public: template class I_List<thread_info>; #endif +#define LIST_PROCESS_HOST_LEN 64 void mysqld_list_processes(THD *thd,const char *user, bool verbose) { @@ -1029,7 +1030,7 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose) field_list.push_back(new Item_int("Id",0,7)); field_list.push_back(new Item_empty_string("User",16)); - field_list.push_back(new Item_empty_string("Host",64)); + field_list.push_back(new Item_empty_string("Host",LIST_PROCESS_HOST_LEN)); field_list.push_back(field=new Item_empty_string("db",NAME_LEN)); field->maybe_null=1; field_list.push_back(new Item_empty_string("Command",16)); @@ -1058,10 +1059,17 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose) thd_info->user=thd->strdup(tmp->user ? tmp->user : (tmp->system_thread ? "system user" : "unauthenticated user")); - thd_info->host=thd->strdup(tmp->host ? tmp->host : - (tmp->ip ? tmp->ip : - (tmp->system_thread ? "none" : - "connecting host"))); + if (tmp->peer_port && (tmp->host || tmp->ip)) + { + if ((thd_info->host= thd->alloc(LIST_PROCESS_HOST_LEN+1))) + snprintf((char *) thd_info->host, LIST_PROCESS_HOST_LEN, "%s:%u", + (tmp->host ? tmp->host : tmp->ip), tmp->peer_port); + } + else + thd_info->host= thd->strdup(tmp->host ? tmp->host : + (tmp->ip ? tmp->ip : + (tmp->system_thread ? "none" : + "connecting host"))); if ((thd_info->db=tmp->db)) // Safe test thd_info->db=thd->strdup(thd_info->db); thd_info->command=(int) tmp->command; diff --git a/vio/viosocket.c b/vio/viosocket.c index f69eebd413a..edcea19d76a 100644 --- a/vio/viosocket.c +++ b/vio/viosocket.c @@ -277,13 +277,14 @@ my_socket vio_fd(Vio* vio) } -my_bool vio_peer_addr(Vio * vio, char *buf) +my_bool vio_peer_addr(Vio * vio, char *buf, u_int16_t *port) { DBUG_ENTER("vio_peer_addr"); DBUG_PRINT("enter", ("sd: %d", vio->sd)); if (vio->localhost) { strmov(buf,"127.0.0.1"); + *port= 0; } else { @@ -295,6 +296,7 @@ my_bool vio_peer_addr(Vio * vio, char *buf) DBUG_RETURN(1); } my_inet_ntoa(vio->remote.sin_addr,buf); + *port= ntohs(vio->remote.sin_port); } DBUG_PRINT("exit", ("addr: %s", buf)); DBUG_RETURN(0); |