From: Marko Kreen Date: Mon, 13 Aug 2007 19:24:02 +0000 (+0000) Subject: Magic number and error message cleanup. X-Git-Tag: pgbouncer_1_1~52 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af57ed77531990ee02c127dcf77fe92b8c50f945;p=pgbouncer Magic number and error message cleanup. Thanks to David Fetter --- diff --git a/src/admin.c b/src/admin.c index c9c7ded..9c21349 100644 --- a/src/admin.c +++ b/src/admin.c @@ -944,7 +944,7 @@ void admin_setup(void) /* fake database */ db = add_database("pgbouncer"); if (!db) - fatal("no mem for admin database"); + fatal("no memory for admin database"); db->addr.port = cf_listen_port; db->addr.is_unix = 1; diff --git a/src/bouncer.h b/src/bouncer.h index 691cf34..82e2397 100644 --- a/src/bouncer.h +++ b/src/bouncer.h @@ -105,6 +105,9 @@ typedef enum SocketState SocketState; #define POOL_TX 1 #define POOL_STMT 2 +/* new style V3 packet header len - type:1b, len:4b */ +#define PQ_HEADER_LEN 5 + struct PgAddr { struct in_addr ip_addr; unsigned short port; diff --git a/src/client.c b/src/client.c index d98cce6..5d3707a 100644 --- a/src/client.c +++ b/src/client.c @@ -87,7 +87,7 @@ bool set_pool(PgSocket *client, const char *dbname, const char *username) user = db->forced_user; client->pool = get_pool(db, user); if (!client->pool) { - disconnect_client(client, true, "no mem for pool"); + disconnect_client(client, true, "no memory for pool"); return false; } @@ -135,13 +135,16 @@ static bool decide_startup_pool(PgSocket *client, MBuf *pkt) get_active_client_count() counts it */ if (get_active_client_count() > cf_max_client_conn) { if (strcmp(dbname, "pgbouncer") != 0) { - disconnect_client(client, true, "no more conns allowed"); + disconnect_client(client, true, "no more connections allowed"); return false; } } return set_pool(client, dbname, username); } +/* mask to get offset into valid_crypt_salt[] */ +#define SALT_MASK 0x3F + static const char valid_crypt_salt[] = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; @@ -150,12 +153,13 @@ static bool send_client_authreq(PgSocket *client) uint8 saltlen = 0; int res; int auth = cf_auth_type; + uint8 randbuf[2]; if (auth == AUTH_CRYPT) { saltlen = 2; - get_random_bytes((void*)client->salt, saltlen); - client->salt[0] = valid_crypt_salt[client->salt[0] & 0x3f]; - client->salt[1] = valid_crypt_salt[client->salt[1] & 0x3f]; + get_random_bytes(randbuf, saltlen); + client->salt[0] = valid_crypt_salt[randbuf[0] & SALT_MASK]; + client->salt[1] = valid_crypt_salt[randbuf[1] & SALT_MASK]; client->salt[2] = 0; } else if (cf_auth_type == AUTH_MD5) { saltlen = 4; @@ -234,7 +238,7 @@ static bool handle_client_startup(PgSocket *client, MBuf *pkt) } break; case 'p': /* PasswordMessage */ - if (mbuf_avail(pkt) < pkt_len - 5) { + if (mbuf_avail(pkt) < pkt_len - PQ_HEADER_LEN) { disconnect_client(client, true, "client sent partial pkt in startup"); return false; } @@ -263,7 +267,7 @@ static bool handle_client_startup(PgSocket *client, MBuf *pkt) disconnect_client(client, false, "bad cancel request"); return false; default: - disconnect_client(client, false, "bad pkt"); + disconnect_client(client, false, "bad packet"); return false; } sbuf_prepare_skip(sbuf, pkt_len); @@ -279,7 +283,7 @@ static bool handle_client_work(PgSocket *client, MBuf *pkt) SBuf *sbuf = &client->sbuf; if (!get_header(pkt, &pkt_type, &pkt_len)) { - disconnect_client(client, true, "bad pkt header"); + disconnect_client(client, true, "bad packet header"); return false; } slog_noise(client, "pkt='%c' len=%d", pkt_type, pkt_len); diff --git a/src/janitor.c b/src/janitor.c index cfddef7..f850413 100644 --- a/src/janitor.c +++ b/src/janitor.c @@ -22,6 +22,7 @@ #include "bouncer.h" +/* do full maintenance 3x per second */ static struct timeval full_maint_period = {0, USEC / 3}; static struct event full_maint_ev; @@ -222,8 +223,8 @@ static int per_loop_suspend(PgPool *pool) active += suspend_socket_list(&pool->idle_server_list); /* as all clients are done, no need for them */ - close_server_list(&pool->tested_server_list, "close unsafe fds on suspend"); - close_server_list(&pool->used_server_list, "close unsafe fds on suspend"); + close_server_list(&pool->tested_server_list, "close unsafe file descriptors on suspend"); + close_server_list(&pool->used_server_list, "close unsafe file descriptors on suspend"); } return active; @@ -328,7 +329,7 @@ static void check_unused_servers(StatList *slist, usec_t now, bool idle_test) idle = now - server->request_time; if (server->close_needed) - disconnect_server(server, true, "db conf changed"); + disconnect_server(server, true, "database configuration changed"); else if (server->state == SV_IDLE && !server->ready) disconnect_server(server, true, "SV_IDLE server got dirty"); else if (server->state == SV_USED && !server->ready) @@ -374,7 +375,7 @@ static void check_pool_size(PgPool *pool) server = first_socket(&pool->idle_server_list); if (!server) break; - disconnect_server(server, true, "too many servers in pool"); + disconnect_server(server, true, "too many servers in the pool"); many--; } } diff --git a/src/loader.c b/src/loader.c index 3dbfe73..573eed8 100644 --- a/src/loader.c +++ b/src/loader.c @@ -227,7 +227,7 @@ void parse_database(char *name, char *connstr) db = add_database(name); if (!db) { - log_error("cannot create database, no mem?"); + log_error("cannot create database, no memory?"); return; } @@ -335,7 +335,7 @@ static void unquote_add_user(const char *username, const char *password) user = add_user(real_user, real_passwd); if (!user) - log_warning("cannot create user, no mem"); + log_warning("cannot create user, no memory"); } static bool auth_loaded(const char *fn) @@ -415,7 +415,7 @@ bool load_auth_file(const char *fn) break; } if (p - user >= MAX_USERNAME) { - log_error("too long username"); + log_error("username too long"); break; } *p++ = 0; /* tag username end */ @@ -544,7 +544,7 @@ bool set_config_param(ConfElem *elem_list, /* got config, parse it */ return desc->io.fn_set(desc, val, console); } - admin_error(console, "unknown config parameter: %s", key); + admin_error(console, "unknown configuration parameter: %s", key); return false; } @@ -624,7 +624,7 @@ void iniparser(const char *fn, ConfSection *sect_list, bool reload) /* expect '=', skip it */ while (*p && (*p == ' ' || *p == '\t')) p++; if (*p != '=') { - log_error("syntax error in config, stopping loading"); + log_error("syntax error in configuration, stopping loading"); break; } else p++; diff --git a/src/objects.c b/src/objects.c index 94af97d..fd51ab3 100644 --- a/src/objects.c +++ b/src/objects.c @@ -764,7 +764,7 @@ void launch_new_connection(PgPool *pool) /* get free conn object */ server = new_server(); if (!server) { - log_debug("launch_new_connection: no mem"); + log_debug("launch_new_connection: no memory"); return; } @@ -833,7 +833,7 @@ bool finish_client_login(PgSocket *client) } if (!welcome_client(client)) { - log_debug("finish_client_login: no welcome msg, pause"); + log_debug("finish_client_login: no welcome message, pause"); client->wait_for_welcome = 1; pause_client(client); if (cf_pause_mode == P_NONE) @@ -875,14 +875,14 @@ found: /* wrong key */ if (!main_client) { - disconnect_client(req, false, "failed cancel req"); + disconnect_client(req, false, "failed cancel request"); return; } /* not linked client, just drop it then */ if (!main_client->link) { bool res; - disconnect_client(req, false, "cancel req for idle client"); + disconnect_client(req, false, "cancel request for idle client"); /* let administrative cancel be handled elsewhere */ if (main_client->pool->admin) { diff --git a/src/pooler.c b/src/pooler.c index a8a7577..5c6d893 100644 --- a/src/pooler.c +++ b/src/pooler.c @@ -28,6 +28,7 @@ static struct event ev_net; static struct event ev_unix; static int suspended = 0; +/* on accept() failure sleep 5 seconds */ static struct event ev_err; static struct timeval err_timeout = {5, 0}; diff --git a/src/util.c b/src/util.c index ae709aa..12a9ea0 100644 --- a/src/util.c +++ b/src/util.c @@ -293,7 +293,7 @@ load_error: } /* - * PostgreSQL MD5 "encryption". + * PostgreSQL MD5 hashing. */ static void hash2hex(const uint8 *hash, char *dst)