pgpool2.git / summary / log / commit / refs
commit 8d1e8dce129743d982702e745daf2ccd4e6bda11
Author: Yugo Nagata <nagata@sraoss.co.jp>
Date: Fri Nov 01 11:20:53 2013 +0000
Fix to pass big parameter by pointer instead of by value at some function
src/include/watchdog/wd_ext.h | 10 +++++-----
src/watchdog/watchdog.c | 8 ++++----
src/watchdog/wd_child.c | 2 +-
src/watchdog/wd_heartbeat.c | 34 +++++++++++++++++-----------------
src/watchdog/wd_packet.c | 6 +++---
5 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/src/include/watchdog/wd_ext.h b/src/include/watchdog/wd_ext.h
index 5f47dcab4..af87d6e6f 100644
--- a/src/include/watchdog/wd_ext.h
+++ b/src/include/watchdog/wd_ext.h
@@ -81,7 +81,7 @@ extern int wd_set_node_mask (WD_PACKET_NO packet_no, int *node_id_set, int count
extern int wd_send_packet_no(WD_PACKET_NO packet_no );
extern int wd_send_lock_packet(WD_PACKET_NO packet_no, WD_LOCK_ID lock_id);
extern void wd_calc_hash(const char *str, int len, char *buf);
-int wd_packet_to_string(WdPacket pkt, char *str, int maxlen);
+int wd_packet_to_string(WdPacket *pkt, char *str, int maxlen);
/* wd_ping.c */
extern int wd_is_upper_ok(char * server_list);
@@ -99,12 +99,12 @@ extern int wd_check_heartbeat(WdInfo * pgpool);
extern int wd_ping_pgpool(WdInfo * pgpool);
/* wd_hearbeat.c */
-extern int wd_create_hb_send_socket(WdHbIf hb_if);
-extern int wd_create_hb_recv_socket(WdHbIf hb_if);
+extern int wd_create_hb_send_socket(WdHbIf * hb_if);
+extern int wd_create_hb_recv_socket(WdHbIf * hb_if);
extern int wd_hb_send(int sock, WdHbPacket * pkt, int len, const char * destination, const int dest_port);
extern int wd_hb_recv(int sock, WdHbPacket * pkt);
-extern pid_t wd_hb_receiver(int fork_wait_time, WdHbIf hb_if);
-extern pid_t wd_hb_sender(int fork_wait_time, WdHbIf hb_if);
+extern pid_t wd_hb_receiver(int fork_wait_time, WdHbIf * hb_if);
+extern pid_t wd_hb_sender(int fork_wait_time, WdHbIf * hb_if);
/* wd_interlock.c */
extern int wd_init_interlock(void);
diff --git a/src/watchdog/watchdog.c b/src/watchdog/watchdog.c
index 1cb5f2bd0..c858910ba 100644
--- a/src/watchdog/watchdog.c
+++ b/src/watchdog/watchdog.c
@@ -151,7 +151,7 @@ wd_main(int fork_wait_time)
for (i = 0; i < pool_config->num_hb_if; i++)
{
/* heartbeat receiver process */
- hb_receiver_pid[i] = wd_hb_receiver(1, pool_config->hb_if[i]);
+ hb_receiver_pid[i] = wd_hb_receiver(1, &(pool_config->hb_if[i]));
if (hb_receiver_pid[i] < 0 )
{
pool_error("launch wd_hb_receiver failed");
@@ -159,7 +159,7 @@ wd_main(int fork_wait_time)
}
/* heartbeat sender process */
- hb_sender_pid[i] = wd_hb_sender(1, pool_config->hb_if[i]);
+ hb_sender_pid[i] = wd_hb_sender(1, &(pool_config->hb_if[i]));
if (hb_sender_pid[i] < 0 )
{
pool_error("launch wd_hb_sender failed");
@@ -314,7 +314,7 @@ wd_reaper_watchdog(pid_t pid, int status)
else
pool_debug("watchdog heartbeat receiver process %d exits with status %d", pid, status);
- hb_receiver_pid[i] = wd_hb_receiver(1, pool_config->hb_if[i]);
+ hb_receiver_pid[i] = wd_hb_receiver(1, &(pool_config->hb_if[i]));
if (hb_receiver_pid[i] < 0)
{
@@ -334,7 +334,7 @@ wd_reaper_watchdog(pid_t pid, int status)
else
pool_debug("watchdog heartbeat sender process %d exits with status %d", pid, status);
- hb_sender_pid[i] = wd_hb_sender(1, pool_config->hb_if[i]);
+ hb_sender_pid[i] = wd_hb_sender(1, &(pool_config->hb_if[i]));
if (hb_sender_pid[i] < 0)
{
diff --git a/src/watchdog/wd_child.c b/src/watchdog/wd_child.c
index 148cc68cc..c505a1e76 100644
--- a/src/watchdog/wd_child.c
+++ b/src/watchdog/wd_child.c
@@ -152,7 +152,7 @@ wd_send_response(int sock, WdPacket * recv_pack)
if (strlen(pool_config->wd_authkey))
{
/* calculate hash from packet */
- pack_str_len = wd_packet_to_string(*recv_pack, pack_str, sizeof(pack_str));
+ pack_str_len = wd_packet_to_string(recv_pack, pack_str, sizeof(pack_str));
wd_calc_hash(pack_str, pack_str_len, hash);
if (strcmp(recv_pack->hash, hash))
diff --git a/src/watchdog/wd_heartbeat.c b/src/watchdog/wd_heartbeat.c
index efd66d799..59d8c5559 100644
--- a/src/watchdog/wd_heartbeat.c
+++ b/src/watchdog/wd_heartbeat.c
@@ -54,13 +54,13 @@
static RETSIGTYPE hb_sender_exit(int sig);
static RETSIGTYPE hb_receiver_exit(int sig);
-static int hton_wd_hb_packet(WdHbPacket * to, WdHbPacket * from);
-static int ntoh_wd_hb_packet(WdHbPacket * to, WdHbPacket * from);
-static int packet_to_string_hb(WdHbPacket pkt, char *str, int maxlen);
+static int hton_wd_hb_packet(WdHbPacket *to, WdHbPacket *from);
+static int ntoh_wd_hb_packet(WdHbPacket *to, WdHbPacket *from);
+static int packet_to_string_hb(WdHbPacket *pkt, char * str, int maxlen);
/* create socket for sending heartbeat */
int
-wd_create_hb_send_socket(WdHbIf hb_if)
+wd_create_hb_send_socket(WdHbIf *hb_if)
{
int sock;
int tos;
@@ -84,14 +84,14 @@ wd_create_hb_send_socket(WdHbIf hb_if)
return -1;
}
- if (hb_if.if_name[0] != '\0')
+ if (hb_if->if_name[0] != '\0')
{
#if defined(SO_BINDTODEVICE)
{
if (geteuid() == 0) /* check root privileges */
{
struct ifreq i;
- strlcpy(i.ifr_name, hb_if.if_name, sizeof(i.ifr_name));
+ strlcpy(i.ifr_name, hb_if->if_name, sizeof(i.ifr_name));
if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, &i, sizeof(i)) == -1)
{
@@ -136,7 +136,7 @@ wd_create_hb_send_socket(WdHbIf hb_if)
/* create socket for receiving heartbeat */
int
-wd_create_hb_recv_socket(WdHbIf hb_if)
+wd_create_hb_recv_socket(WdHbIf *hb_if)
{
struct sockaddr_in addr;
int sock;
@@ -166,14 +166,14 @@ wd_create_hb_recv_socket(WdHbIf hb_if)
return -1;
}
- if (hb_if.if_name[0] != '\0')
+ if (hb_if->if_name[0] != '\0')
{
#if defined(SO_BINDTODEVICE)
{
if (geteuid() == 0) /* check root privileges */
{
struct ifreq i;
- strlcpy(i.ifr_name, hb_if.if_name, sizeof(i.ifr_name));
+ strlcpy(i.ifr_name, hb_if->if_name, sizeof(i.ifr_name));
if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, &i, sizeof(i)) == -1)
{
@@ -311,7 +311,7 @@ wd_hb_recv(int sock, WdHbPacket * pkt)
/* fork heartbeat receiver child */
pid_t
-wd_hb_receiver(int fork_wait_time, WdHbIf hb_if)
+wd_hb_receiver(int fork_wait_time, WdHbIf *hb_if)
{
int sock;
pid_t pid = 0;
@@ -372,7 +372,7 @@ wd_hb_receiver(int fork_wait_time, WdHbIf hb_if)
if (strlen(pool_config->wd_authkey))
{
/* calculate hash from packet */
- pack_str_len = packet_to_string_hb(pkt, pack_str, sizeof(pack_str));
+ pack_str_len = packet_to_string_hb(&pkt, pack_str, sizeof(pack_str));
wd_calc_hash(pack_str, pack_str_len, buf);
if (strcmp(pkt.hash, buf))
@@ -422,7 +422,7 @@ wd_hb_receiver(int fork_wait_time, WdHbIf hb_if)
/* fork heartbeat sender child */
pid_t
-wd_hb_sender(int fork_wait_time, WdHbIf hb_if)
+wd_hb_sender(int fork_wait_time, WdHbIf *hb_if)
{
int sock;
pid_t pid = 0;
@@ -482,13 +482,13 @@ wd_hb_sender(int fork_wait_time, WdHbIf hb_if)
if (strlen(pool_config->wd_authkey))
{
/* calculate hash from packet */
- pack_str_len = packet_to_string_hb(pkt, pack_str, sizeof(pack_str));
+ pack_str_len = packet_to_string_hb(&pkt, pack_str, sizeof(pack_str));
wd_calc_hash(pack_str, pack_str_len, pkt.hash);
}
/* send heartbeat signal */
- wd_hb_send(sock, &pkt, sizeof(pkt), hb_if.addr, hb_if.dest_port);
- pool_debug("wd_hb_sender: send heartbeat signal to %s:%d", hb_if.addr, hb_if.dest_port);
+ wd_hb_send(sock, &pkt, sizeof(pkt), hb_if->addr, hb_if->dest_port);
+ pool_debug("wd_hb_sender: send heartbeat signal to %s:%d", hb_if->addr, hb_if->dest_port);
sleep(pool_config->wd_heartbeat_keepalive);
}
@@ -567,11 +567,11 @@ ntoh_wd_hb_packet(WdHbPacket * to, WdHbPacket * from)
/* convert packet to string and return length of the string */
static int
-packet_to_string_hb(WdHbPacket pkt, char *str, int maxlen)
+packet_to_string_hb(WdHbPacket *pkt, char *str, int maxlen)
{
int len;
len = snprintf(str, maxlen, "status=%d tv_sec=%ld tv_usec=%ld from=%s",
- pkt.status, pkt.send_time.tv_sec, pkt.send_time.tv_usec, pkt.from);
+ pkt->status, pkt->send_time.tv_sec, pkt->send_time.tv_usec, pkt->from);
return len;
}
diff --git a/src/watchdog/wd_packet.c b/src/watchdog/wd_packet.c
index f9fa29eff..2dd6df315 100644
--- a/src/watchdog/wd_packet.c
+++ b/src/watchdog/wd_packet.c
@@ -505,7 +505,7 @@ wd_thread_negotiation(void * arg)
if (strlen(pool_config->wd_authkey))
{
/* calculate hash from packet */
- pack_str_len = wd_packet_to_string(*(thread_arg->packet), pack_str, sizeof(pack_str));
+ pack_str_len = wd_packet_to_string(thread_arg->packet, pack_str, sizeof(pack_str));
wd_calc_hash(pack_str, pack_str_len, thread_arg->packet->hash);
}
@@ -1123,12 +1123,12 @@ wd_calc_hash(const char *str, int len, char *buf)
}
int
-wd_packet_to_string(WdPacket pkt, char *str, int maxlen)
+wd_packet_to_string(WdPacket *pkt, char *str, int maxlen)
{
int len;
len = snprintf(str, maxlen, "no=%d tv_sec=%ld tv_usec=%ld",
- pkt.packet_no, pkt.send_time.tv_sec, pkt.send_time.tv_usec);
+ pkt->packet_no, pkt->send_time.tv_sec, pkt->send_time.tv_usec);
return len;
}
[parent: 0f8d5c918112]