#include <common/compat/endian.h>
#include <common/defaults.h>
#include <common/futex.h>
-#include <common/index/index.h>
#include <common/sessiond-comm/sessiond-comm.h>
#include <common/sessiond-comm/inet.h>
#include <common/sessiond-comm/relayd.h>
#include "ctf-trace.h"
#include "connection.h"
#include "viewer-session.h"
+#include "index-file.h"
#define SESSION_BUF_DEFAULT_COUNT 16
ret = -ENOENT;
goto end;
}
- vstream->index_file = lttng_index_file_open(vstream->path_name,
+ vstream->index_file = relay_index_file_open(vstream->path_name,
vstream->channel_name,
vstream->stream->tracefile_count,
vstream->current_tracefile_id);
viewer_index.flags |= LTTNG_VIEWER_FLAG_NEW_STREAM;
}
- ret = lttng_index_file_read(vstream->index_file, &packet_index);
+ ret = relay_index_file_read(vstream->index_file, &packet_index);
if (ret) {
- ERR("Relay error reading index file %d",
- vstream->index_file->fd);
+ ERR("Relay error reading index file");
viewer_index.status = htobe32(LTTNG_VIEWER_INDEX_ERR);
goto send_reply;
} else {
static
int viewer_get_packet(struct relay_connection *conn)
{
- int ret, stream_fd;
+ int ret, stream_fd = -1;
off_t lseek_ret;
char *reply = NULL;
struct lttng_viewer_get_packet get_packet_info;
stream_fd = stream_fd_get_fd(vstream->stream_fd);
if (stream_fd < 0) {
ERR("Failed to get viewer stream file descriptor");
- goto error_put_fd;
+ goto error;
}
lseek_ret = lseek(stream_fd, be64toh(get_packet_info.offset), SEEK_SET);
if (lseek_ret < 0) {
PERROR("lseek fd %d to offset %" PRIu64, stream_fd,
(uint64_t) be64toh(get_packet_info.offset));
- goto error_put_fd;
+ goto error;
}
read_len = lttng_read(stream_fd,
reply + sizeof(reply_header),
PERROR("Relay reading trace file, fd: %d, offset: %" PRIu64,
stream_fd,
(uint64_t) be64toh(get_packet_info.offset));
- goto error_put_fd;
+ goto error;
}
reply_header.status = htobe32(LTTNG_VIEWER_GET_PACKET_OK);
reply_header.len = htobe32(packet_data_len);
goto send_reply;
-error_put_fd:
- stream_fd_put_fd(vstream->stream_fd);
error:
reply_header.status = htobe32(LTTNG_VIEWER_GET_PACKET_ERR);
end_free:
free(reply);
end:
+ if (stream_fd >= 0) {
+ stream_fd_put_fd(vstream->stream_fd);
+ }
if (vstream) {
viewer_stream_put(vstream);
}
stream_fd = stream_fd_get_fd(vstream->stream_fd);
if (stream_fd < 0) {
- goto error_put_fd;
+ goto error;
}
read_len = lttng_read(stream_fd, data, len);
if (read_len < len) {
PERROR("Relay reading metadata file");
- goto error_put_fd;
+ goto error;
}
vstream->metadata_sent += read_len;
if (vstream->metadata_sent == vstream->stream->metadata_received
reply.status = htobe32(LTTNG_VIEWER_METADATA_OK);
goto send_reply;
-error_put_fd:
- (void) stream_fd_put_fd(vstream->stream_fd);
error:
reply.status = htobe32(LTTNG_VIEWER_METADATA_ERR);
end_free:
free(data);
end:
+ if (stream_fd >= 0) {
+ stream_fd_put_fd(vstream->stream_fd);
+ }
if (vstream) {
viewer_stream_put(vstream);
}