- int dst_fd;
- const int src_fd = *((int *) lttng_dynamic_array_get_element(
- &src_payload->_fds, i));
-
- dst_fd = dup(src_fd);
- if (dst_fd < 0) {
- PERROR("Failed to duplicate file descriptor while copying a payload");
- ret = dst_fd;
- goto error;
+ struct fd_handle *new_fd_handle;
+ const struct fd_handle *src_fd_handle =
+ lttng_dynamic_pointer_array_get_pointer(
+ &src_payload->_fd_handles, i);
+
+ new_fd_handle = fd_handle_copy(src_fd_handle);
+ if (!new_fd_handle) {
+ PERROR("Failed to copy fd_handle while copying a payload");
+ ret = -1;
+ goto end;