summaryrefslogtreecommitdiffstats
path: root/src/ccapi/server/ccs_callback.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ccapi/server/ccs_callback.c')
-rw-r--r--src/ccapi/server/ccs_callback.c47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/ccapi/server/ccs_callback.c b/src/ccapi/server/ccs_callback.c
index 8035e5af1..1076d9025 100644
--- a/src/ccapi/server/ccs_callback.c
+++ b/src/ccapi/server/ccs_callback.c
@@ -102,29 +102,30 @@ cc_int32 ccs_callback_new (ccs_callback_t *out_callback,
cc_int32 ccs_callback_release (ccs_callback_t io_callback)
{
cc_int32 err = ccNoError;
- ccs_client_t client = NULL;
-
- if (!io_callback) { err = cci_check_error (ccErrBadParam); }
- if (!err && io_callback->pending) {
- err = ccs_server_send_reply (io_callback->reply_pipe,
- io_callback->invalid_object_err, NULL);
-
- io_callback->pending = 0;
- }
-
- if (!err) {
- err = ccs_server_client_for_pipe (io_callback->client_pipe, &client);
- }
-
- if (!err) {
- err = ccs_client_remove_callback (client, io_callback);
- }
-
- if (!err) {
- ccs_pipe_release (io_callback->client_pipe);
- ccs_pipe_release (io_callback->reply_pipe);
- free (io_callback);
+ if (!err && io_callback) {
+ ccs_client_t client = NULL;
+
+ if (io_callback->pending) {
+ err = ccs_server_send_reply (io_callback->reply_pipe,
+ io_callback->invalid_object_err, NULL);
+
+ io_callback->pending = 0;
+ }
+
+ if (!err) {
+ err = ccs_server_client_for_pipe (io_callback->client_pipe, &client);
+ }
+
+ if (!err) {
+ err = ccs_client_remove_callback (client, io_callback);
+ }
+
+ if (!err) {
+ ccs_pipe_release (io_callback->client_pipe);
+ ccs_pipe_release (io_callback->reply_pipe);
+ free (io_callback);
+ }
}
return cci_check_error (err);
@@ -157,6 +158,8 @@ cc_int32 ccs_callback_reply_to_client (ccs_callback_t io_callback,
if (!err) {
if (io_callback->pending) {
+ cci_debug_printf ("%s: callback %p replying to client.", __FUNCTION__, io_callback);
+
err = ccs_server_send_reply (io_callback->reply_pipe, err, in_stream);
if (err) {