summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/mirror_vfd/mirror_remote.c2
-rw-r--r--utils/mirror_vfd/mirror_remote.h2
-rw-r--r--utils/mirror_vfd/mirror_server.c57
-rw-r--r--utils/mirror_vfd/mirror_server_stop.c17
-rw-r--r--utils/mirror_vfd/mirror_writer.c8
5 files changed, 54 insertions, 32 deletions
diff --git a/utils/mirror_vfd/mirror_remote.c b/utils/mirror_vfd/mirror_remote.c
index f61580d..8bb9544 100644
--- a/utils/mirror_vfd/mirror_remote.c
+++ b/utils/mirror_vfd/mirror_remote.c
@@ -147,7 +147,7 @@ mirror_log_bytes(struct mirror_log_info *info, unsigned int level, size_t n_byte
* ----------------------------------------------------------------------------
*/
loginfo_t *
-mirror_log_init(char *path, char *prefix, unsigned int verbosity)
+mirror_log_init(char *path, const char *prefix, unsigned int verbosity)
{
loginfo_t *info = NULL;
diff --git a/utils/mirror_vfd/mirror_remote.h b/utils/mirror_vfd/mirror_remote.h
index 6f37b0b..9415f7f 100644
--- a/utils/mirror_vfd/mirror_remote.h
+++ b/utils/mirror_vfd/mirror_remote.h
@@ -42,7 +42,7 @@ typedef struct mirror_log_info {
void mirror_log(loginfo_t *info, unsigned int level, const char *format, ...);
void mirror_log_bytes(loginfo_t *info, unsigned int level, size_t n_bytes, const unsigned char *buf);
-loginfo_t *mirror_log_init(char *path, char *prefix, unsigned int verbosity);
+loginfo_t *mirror_log_init(char *path, const char *prefix, unsigned int verbosity);
int mirror_log_term(loginfo_t *loginfo);
herr_t run_writer(int socketfd, H5FD_mirror_xmit_open_t *xmit_open);
diff --git a/utils/mirror_vfd/mirror_server.c b/utils/mirror_vfd/mirror_server.c
index 9de07c1..d6b5254 100644
--- a/utils/mirror_vfd/mirror_server.c
+++ b/utils/mirror_vfd/mirror_server.c
@@ -46,11 +46,8 @@
#ifdef H5_HAVE_MIRROR_VFD
-#define MAXBUF 2048 /* max buffer length. */
-#define LISTENQ 80 /* max pending mirrorS requests */
-#define DEFAULT_PORT 3000 /* default listening port */
-#define MAX_PORT_LOOPS 20 /* max iteratations through port range */
-#define PORT_LOOP_RETRY_DELAY 1 /* seconds to wait between port scans */
+#define LISTENQ 80 /* max pending mirrorS requests */
+#define DEFAULT_PORT 3000 /* default listening port */
/* semi-unique "magic" numbers to sanity-check structure pointers */
#define OP_ARGS_MAGIC 0xCF074379u
@@ -80,7 +77,7 @@
* line.
*
* `log_prepend_type` (int)
- * Flag that the logging messages should have the assocaited verbosity
+ * Flag that the logging messages should have the associated verbosity
* level present in the line (e.g., "WARN", "ERROR", or "INFO").
*
* `log_path` (char *)
@@ -94,14 +91,14 @@
* ---------------------------------------------------------------------------
*/
struct op_args {
- uint32_t magic;
- int help;
- int main_port;
- int verbosity;
- int log_prepend_serv;
- int log_prepend_type;
- char log_path[PATH_MAX + 1];
- char writer_log_path[PATH_MAX + 1];
+ uint32_t magic;
+ int help;
+ int main_port;
+ unsigned int verbosity;
+ int log_prepend_serv;
+ int log_prepend_type;
+ char log_path[PATH_MAX + 1];
+ char writer_log_path[PATH_MAX + 1];
};
/* ---------------------------------------------------------------------------
@@ -211,8 +208,8 @@ parse_args(int argc, char **argv, struct op_args *args_out)
return -1;
}
- /* Loop over arguments after program name and writer_path */
- for (i = 2; i < argc; i++) {
+ /* Loop over arguments after program name */
+ for (i = 1; i < argc; i++) {
if (!HDstrncmp(argv[i], "-h", 3) || !HDstrncmp(argv[i], "--help", 7)) {
mirror_log(NULL, V_INFO, "found help argument");
args_out->help = 1;
@@ -224,7 +221,7 @@ parse_args(int argc, char **argv, struct op_args *args_out)
} /* end if port */
else if (!HDstrncmp(argv[i], "--verbosity=", 12)) {
mirror_log(NULL, V_INFO, "parsing 'verbosity' (%s)", argv[i] + 12);
- args_out->verbosity = HDatoi(argv[i] + 12);
+ args_out->verbosity = (unsigned int)HDatoi(argv[i] + 12);
} /* end if verbosity */
else if (!HDstrncmp(argv[i], "--logpath=", 10)) {
mirror_log(NULL, V_INFO, "parsing 'logpath' (%s)", argv[i] + 10);
@@ -456,7 +453,7 @@ error:
* ---------------------------------------------------------------------------
*/
static void
-wait_for_child(int sig)
+wait_for_child(int H5_ATTR_UNUSED sig)
{
while (HDwaitpid(-1, NULL, WNOHANG) > 0)
;
@@ -476,7 +473,7 @@ handle_requests(struct server_run *run)
{
int connfd = -1; /**/
char mybuf[H5FD_MIRROR_XMIT_OPEN_SIZE]; /**/
- int ret; /* general-purpose error-checking */
+ ssize_t ret; /* general-purpose error-checking */
int pid; /* process ID of fork */
struct sigaction sa;
int ret_value = 0;
@@ -521,14 +518,13 @@ handle_requests(struct server_run *run)
/* Read handshake from port connection.
*/
- ret = (int)HDread(connfd, &mybuf, H5FD_MIRROR_XMIT_OPEN_SIZE);
- if (-1 == ret) {
+ if ((ret = HDread(connfd, &mybuf, H5FD_MIRROR_XMIT_OPEN_SIZE)) < 0) {
mirror_log(run->loginfo, V_ERR, "read:%d", ret);
goto error;
}
mirror_log(run->loginfo, V_INFO, "received %d bytes", ret);
mirror_log(run->loginfo, V_ALL, "```");
- mirror_log_bytes(run->loginfo, V_ALL, ret, (const unsigned char *)mybuf);
+ mirror_log_bytes(run->loginfo, V_ALL, (size_t)ret, (const unsigned char *)mybuf);
mirror_log(run->loginfo, V_ALL, "```");
/* Respond to handshake message.
@@ -537,10 +533,27 @@ handle_requests(struct server_run *run)
if (!HDstrncmp("SHUTDOWN", mybuf, 8)) {
/* Stop operation if told to stop */
mirror_log(run->loginfo, V_INFO, "received SHUTDOWN!", ret);
+
+ /* Confirm operation */
+ if ((ret = HDwrite(connfd, "CLOSING", 8)) < 0) {
+ mirror_log(run->loginfo, V_ERR, "write:%d", ret);
+ HDclose(connfd);
+ connfd = -1;
+ goto error;
+ }
+
HDclose(connfd);
connfd = -1;
goto done;
} /* end if explicit "SHUTDOWN" directive */
+ if (!HDstrncmp("CONFIRM", mybuf, 7)) {
+ /* Confirm operation */
+ if ((ret = HDwrite(connfd, "ALIVE", 6)) < 0) {
+ mirror_log(run->loginfo, V_ERR, "write:%d", ret);
+ goto error;
+ }
+ HDclose(connfd);
+ } /* end if "CONFIRM" directive */
else if (H5FD_MIRROR_XMIT_OPEN_SIZE == ret) {
H5FD_mirror_xmit_open_t xopen;
diff --git a/utils/mirror_vfd/mirror_server_stop.c b/utils/mirror_vfd/mirror_server_stop.c
index bf306d9..44386bf 100644
--- a/utils/mirror_vfd/mirror_server_stop.c
+++ b/utils/mirror_vfd/mirror_server_stop.c
@@ -15,7 +15,7 @@
* Exists for cross-platform, optionally remote shutdown.
*/
-#include "H5private.h" /* System compatability call-wrapper macros */
+#include "H5private.h" /* System compatibility call-wrapper macros */
#ifdef H5_HAVE_MIRROR_VFD
@@ -60,13 +60,13 @@ struct mshs_opts {
static void
usage(void)
{
- HDprintf("mirror_server_halten_sie [options]\n"
+ HDprintf("mirror_server_stop [options]\n"
"System-independent Mirror Server shutdown program.\n"
"Sends shutdown message to Mirror Server at given IP:port\n"
"\n"
"Options:\n"
" -h | --help Print this usage message and exit.\n"
- " --ip=ADDR IP Address of remote server (defaut %s)\n"
+ " --ip=ADDR IP Address of remote server (default %s)\n"
" --port=PORT Handshake port of remote server (default %d)\n",
MSHS_DEFAULT_IP, MSHS_DEFAULT_PORTNO);
} /* end usage() */
@@ -128,6 +128,7 @@ parse_args(int argc, char **argv, struct mshs_opts *opts)
static int
send_shutdown(struct mshs_opts *opts)
{
+ char mybuf[16];
int live_socket;
struct sockaddr_in target_addr;
@@ -157,6 +158,16 @@ send_shutdown(struct mshs_opts *opts)
return -1;
}
+ /* Read & verify response from port connection. */
+ if (HDread(live_socket, &mybuf, sizeof(mybuf)) == -1) {
+ HDprintf("ERROR read() can't receive data\n");
+ return -1;
+ }
+ if (HDstrncmp("CLOSING", mybuf, 8)) {
+ HDprintf("ERROR read() didn't receive data from server\n");
+ return -1;
+ }
+
if (HDclose(live_socket) < 0) {
HDprintf("ERROR close() can't close socket\n");
return -1;
diff --git a/utils/mirror_vfd/mirror_writer.c b/utils/mirror_vfd/mirror_writer.c
index d3f12de..5726db5 100644
--- a/utils/mirror_vfd/mirror_writer.c
+++ b/utils/mirror_vfd/mirror_writer.c
@@ -788,8 +788,7 @@ do_write(struct mirror_session *session, const unsigned char *xmit_buf)
*/
sum_bytes_written = 0;
do {
- nbytes_in_packet = HDread(session->sockfd, buf, H5FD_MIRROR_DATA_BUFFER_MAX);
- if (-1 == nbytes_in_packet) {
+ if ((nbytes_in_packet = HDread(session->sockfd, buf, H5FD_MIRROR_DATA_BUFFER_MAX)) < 0) {
mirror_log(session->loginfo, V_ERR, "can't read into databuffer");
reply_error(session, "can't read data buffer");
return -1;
@@ -798,7 +797,7 @@ do_write(struct mirror_session *session, const unsigned char *xmit_buf)
mirror_log(session->loginfo, V_INFO, "received %zd bytes", nbytes_in_packet);
if (HEXDUMP_WRITEDATA) {
mirror_log(session->loginfo, V_ALL, "DATA:\n```");
- mirror_log_bytes(session->loginfo, V_ALL, nbytes_in_packet, (const unsigned char *)buf);
+ mirror_log_bytes(session->loginfo, V_ALL, (size_t)nbytes_in_packet, (const unsigned char *)buf);
mirror_log(session->loginfo, V_ALL, "```");
}
@@ -859,8 +858,7 @@ receive_communique(struct mirror_session *session, struct sock_comm *comm)
mirror_log(session->loginfo, V_INFO, "ready to receive"); /* TODO */
- read_ret = HDread(session->sockfd, comm->raw, H5FD_MIRROR_XMIT_BUFFER_MAX);
- if (-1 == read_ret) {
+ if ((read_ret = HDread(session->sockfd, comm->raw, H5FD_MIRROR_XMIT_BUFFER_MAX)) < 0) {
mirror_log(session->loginfo, V_ERR, "read:%zd", read_ret);
goto error;
}