int producer_active);
/* Release object created by members of this API */
-void ustctl_release_object(int sock, struct lttng_ust_object_data *data);
+int ustctl_release_object(int sock, struct lttng_ust_object_data *data);
#endif /* _LTTNG_UST_CTL_H */
* If sock is negative, it means we don't have to notify the other side
* (e.g. application has already vanished).
*/
-void ustctl_release_object(int sock, struct lttng_ust_object_data *data)
+int ustctl_release_object(int sock, struct lttng_ust_object_data *data)
{
struct ustcomm_ust_msg lum;
struct ustcomm_ust_reply lur;
int ret;
- if (data->shm_fd >= 0)
- close(data->shm_fd);
- if (data->wait_fd >= 0)
- close(data->wait_fd);
+ if (data->shm_fd >= 0) {
+ ret = close(data->shm_fd);
+ if (ret < 0) {
+ return ret;
+ }
+ }
+ if (data->wait_fd >= 0) {
+ ret = close(data->wait_fd);
+ if (ret < 0) {
+ return ret;
+ }
+ }
if (sock >= 0) {
memset(&lum, 0, sizeof(lum));
lum.handle = data->handle;
lum.cmd = LTTNG_UST_RELEASE;
ret = ustcomm_send_app_cmd(sock, &lum, &lur);
- assert(!ret);
+ if (ret < 0) {
+ return ret;
+ }
}
+ return 0;
}
/*
return 0;
error:
- ustctl_release_object(sock, metadata_data);
+ (void) ustctl_release_object(sock, metadata_data);
free(metadata_data);
return -EINVAL;
}
return 0;
error:
- ustctl_release_object(sock, channel_data);
+ (void) ustctl_release_object(sock, channel_data);
free(channel_data);
return -EINVAL;
}
return ret;
error:
- ustctl_release_object(sock, stream_data);
+ (void) ustctl_release_object(sock, stream_data);
free(stream_data);
return -EINVAL;
}