* This frees a request: you should only call it once it has been
* handed to your callback. For incomplete requests, see ctdb_cancel().
*/
-void ctdb_request_free(struct ctdb_connection *ctdb, struct ctdb_request *req);
+void ctdb_request_free(struct ctdb_request *req);
/**
* ctdb_callback_t - callback for completed requests.
"ctdb_connect(async): failed to get pnn");
ctdb->broken = true;
}
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
struct ctdb_connection *ctdb_connect(const char *addr,
while ((i = ctdb->outq) != NULL) {
DLIST_REMOVE(ctdb->outq, i);
- ctdb_request_free(ctdb, i);
+ ctdb_request_free(i);
}
while ((i = ctdb->doneq) != NULL) {
DLIST_REMOVE(ctdb->doneq, i);
- ctdb_request_free(ctdb, i);
+ ctdb_request_free(i);
}
if (ctdb->in)
return req;
}
-void ctdb_request_free(struct ctdb_connection *ctdb, struct ctdb_request *req)
+void ctdb_request_free(struct ctdb_request *req)
{
+ struct ctdb_connection *ctdb = req->ctdb;
+
if (req->next || req->prev) {
DEBUG(ctdb, LOG_ALERT,
"ctdb_request_free: request not complete! ctdb_cancel? %p (id %u)",
struct ctdb_request *req,
void *unused)
{
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
void ctdb_cancel(struct ctdb_connection *ctdb, struct ctdb_request *req)
DEBUG(ctdb, LOG_ALERT,
"ctdb_cancel: request completed! ctdb_request_free? %p (id %u)",
req, req->hdr.hdr ? req->hdr.hdr->reqid : 0);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
return;
}
free(req->priv_data);
/* second request is chained off this one. */
if (req->extra) {
- ctdb_request_free(ctdb, req->extra);
+ ctdb_request_free(req->extra);
}
}
" NULL_FUNC returned %i", reply->status);
}
lock->callback(lock->ctdb_db, NULL, tdb_null, private);
- ctdb_request_free(ctdb, req); /* Also frees lock. */
+ ctdb_request_free(req); /* Also frees lock. */
return;
}
/* Now it's their responsibility to free lock & request! */
req->extra_destructor = NULL;
lock->callback(lock->ctdb_db, lock, data, private);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
return;
}
tdb_null, tdb_null,
state->cbdata);
}
- ctdb_request_free(ctdb, state->handle);
+ ctdb_request_free(state->handle);
state->handle = NULL;
free(state);
}
{
struct ctdb_traverse_state *state = private_data;
- ctdb_request_free(ctdb, state->handle);
+ ctdb_request_free(state->handle);
state->handle = NULL;
}
TRAVERSE_STATUS_ERROR,
tdb_null, tdb_null,
state->cbdata);
- ctdb_request_free(ctdb, state->handle);
+ ctdb_request_free(state->handle);
state->handle = NULL;
free(state);
return;
}
- ctdb_request_free(ctdb, state->handle);
+ ctdb_request_free(state->handle);
state->handle = NULL;
t.db_id = ctdb_db->id;
if (!*done)
ctdb_cancel(ctdb, req);
else
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
return NULL;
}
}
&done);
if (req != NULL) {
ret = ctdb_getrecmaster_recv(ctdb, req, recmaster);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
return ret;
}
&done);
if (req != NULL) {
ret = ctdb_attachdb_recv(ctdb, req);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
return ret;
}
&done);
if (req != NULL) {
ret = ctdb_getpnn_recv(ctdb, req, pnn);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
return ret;
}
&done);
if (req != NULL) {
ret = ctdb_getnodemap_recv(ctdb, req, nodemap);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
return ret;
}
&done);
if (req != NULL) {
ret = ctdb_getpublicips_recv(ctdb, req, ips);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
return ret;
}
&done);
if (req != NULL) {
ret = ctdb_set_message_handler_recv(ctdb, req);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
}
return ret;
}
struct ctdb_node_map *nodemap;
status = ctdb_getnodemap_recv(ctdb, req, &nodemap);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
if (!status) {
printf("Error reading NODEMAP\n");
return;
struct ctdb_all_public_ips *ips;
status = ctdb_getpublicips_recv(ctdb, req, &ips);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
if (!status) {
printf("Error reading PUBLIC IPS\n");
return;
uint32_t pnn;
status = ctdb_getpnn_recv(ctdb, req, &pnn);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
if (!status) {
printf("Error reading PNN\n");
return;
uint32_t rm;
status = ctdb_getrecmaster_recv(ctdb, req, &rm);
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
if (!status) {
printf("Error reading RECMASTER\n");
return;
if (!ctdb_set_message_handler_recv(ctdb, req)) {
err(1, "registering message");
}
- ctdb_request_free(ctdb, req);
+ ctdb_request_free(req);
printf("Message handler registered\n");
registered = true;
}