X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fmain.c;h=3bef52b43068e8f8b2ac5ce4a5fbe9289b7fb9ca;hb=4a096a5baf467a5c0c1346b759b7c3ac43125ff2;hp=9a2b3bda7c010e9c8da7ad7a7b0345c9e4697d03;hpb=0f907de1f20c91a2bd1a08ee4d50332d1958754b;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index 9a2b3bda7..3bef52b43 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -105,12 +105,12 @@ static void usage(void) { fprintf(stderr, "Usage: %s OPTIONS\n\nOptions:\n", progname); - fprintf(stderr, " -h, --help Display this usage.\n"); - fprintf(stderr, " -d, --daemonize Start as a daemon.\n"); - fprintf(stderr, " -C, --control-port Control port listening (URI)\n"); - fprintf(stderr, " -D, --data-port Data port listening (URI)\n"); - fprintf(stderr, " -o, --output Output path for traces (PATH)\n"); - fprintf(stderr, " -v, --verbose Verbose mode. Activate DBG() macro.\n"); + fprintf(stderr, " -h, --help Display this usage.\n"); + fprintf(stderr, " -d, --daemonize Start as a daemon.\n"); + fprintf(stderr, " -C, --control-port URL Control port listening.\n"); + fprintf(stderr, " -D, --data-port URL Data port listening.\n"); + fprintf(stderr, " -o, --output PATH Output path for traces. Must use an absolute path.\n"); + fprintf(stderr, " -v, --verbose Verbose mode. Activate DBG() macro.\n"); } static @@ -863,8 +863,12 @@ int relay_add_stream(struct lttcomm_relayd_hdr *recv_hdr, goto end; } + /* + * No need to use run_as API here because whatever we receives, the relayd + * uses its own credentials for the stream files. + */ ret = utils_create_stream_file(stream->path_name, stream->channel_name, - stream->tracefile_size, 0, getuid(), getgid()); + stream->tracefile_size, 0, -1, -1); if (ret < 0) { ERR("Create output file"); goto end; @@ -1183,12 +1187,8 @@ int relay_send_version(struct lttcomm_relayd_hdr *recv_hdr, goto end; } - ret = sscanf(VERSION, "%10u.%10u", &reply.major, &reply.minor); - if (ret < 2) { - ERR("Error in scanning version"); - ret = -1; - goto end; - } + reply.major = RELAYD_VERSION_COMM_MAJOR; + reply.minor = RELAYD_VERSION_COMM_MINOR; /* Major versions must be the same */ if (reply.major != be32toh(msg.major)) { @@ -1625,13 +1625,15 @@ int relay_process_data(struct relay_command *cmd, struct lttng_ht *streams_ht) stream->tracefile_size) { ret = utils_rotate_stream_file(stream->path_name, stream->channel_name, stream->tracefile_size, - stream->tracefile_count, getuid(), getgid(), + stream->tracefile_count, -1, -1, stream->fd, &(stream->tracefile_count_current)); if (ret < 0) { ERR("Rotating output file"); goto end; } stream->fd = ret; + /* Reset current size because we just perform a stream rotation. */ + stream->tracefile_size_current = 0; } stream->tracefile_size_current += data_size; do { @@ -2065,6 +2067,11 @@ int main(int argc, char **argv) /* Try to create directory if -o, --output is specified. */ if (opt_output_path) { + if (*opt_output_path != '/') { + ERR("Please specify an absolute path for -o, --output PATH"); + goto exit; + } + ret = utils_mkdir_recursive(opt_output_path, S_IRWXU | S_IRWXG); if (ret < 0) { ERR("Unable to create %s", opt_output_path);