struct tsocket_address *src;
};
-static int tdgram_recvfrom_destructor(struct tdgram_recvfrom_state *state)
+static void tdgram_recvfrom_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
+ struct tdgram_recvfrom_state *state = tevent_req_data(req,
+ struct tdgram_recvfrom_state);
+
if (state->dgram) {
state->dgram->recvfrom_req = NULL;
+ state->dgram = NULL;
}
-
- return 0;
}
static void tdgram_recvfrom_done(struct tevent_req *subreq);
}
dgram->recvfrom_req = req;
- talloc_set_destructor(state, tdgram_recvfrom_destructor);
+ tevent_req_set_cleanup_fn(req, tdgram_recvfrom_cleanup);
subreq = state->ops->recvfrom_send(state, ev, dgram);
if (tevent_req_nomem(subreq, req)) {
ssize_t ret;
};
-static int tdgram_sendto_destructor(struct tdgram_sendto_state *state)
+static void tdgram_sendto_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
+ struct tdgram_sendto_state *state = tevent_req_data(req,
+ struct tdgram_sendto_state);
+
if (state->dgram) {
state->dgram->sendto_req = NULL;
+ state->dgram = NULL;
}
-
- return 0;
}
static void tdgram_sendto_done(struct tevent_req *subreq);
}
dgram->sendto_req = req;
- talloc_set_destructor(state, tdgram_sendto_destructor);
+ tevent_req_set_cleanup_fn(req, tdgram_sendto_cleanup);
subreq = state->ops->sendto_send(state, ev, dgram,
buf, len, dst);
int ret;
};
-static int tstream_readv_destructor(struct tstream_readv_state *state)
+static void tstream_readv_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
+ struct tstream_readv_state *state = tevent_req_data(req,
+ struct tstream_readv_state);
+
if (state->stream) {
state->stream->readv_req = NULL;
+ state->stream = NULL;
}
-
- return 0;
}
static void tstream_readv_done(struct tevent_req *subreq);
}
stream->readv_req = req;
- talloc_set_destructor(state, tstream_readv_destructor);
+ tevent_req_set_cleanup_fn(req, tstream_readv_cleanup);
subreq = state->ops->readv_send(state, ev, stream, vector, count);
if (tevent_req_nomem(subreq, req)) {
int ret;
};
-static int tstream_writev_destructor(struct tstream_writev_state *state)
+static void tstream_writev_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
+ struct tstream_writev_state *state = tevent_req_data(req,
+ struct tstream_writev_state);
+
if (state->stream) {
state->stream->writev_req = NULL;
+ state->stream = NULL;
}
-
- return 0;
}
static void tstream_writev_done(struct tevent_req *subreq);
}
stream->writev_req = req;
- talloc_set_destructor(state, tstream_writev_destructor);
+ tevent_req_set_cleanup_fn(req, tstream_writev_cleanup);
subreq = state->ops->writev_send(state, ev, stream, vector, count);
if (tevent_req_nomem(subreq, req)) {
struct tsocket_address *src;
};
-static int tdgram_bsd_recvfrom_destructor(struct tdgram_bsd_recvfrom_state *state)
+static void tdgram_bsd_recvfrom_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
- struct tdgram_bsd *bsds = tdgram_context_data(state->dgram,
- struct tdgram_bsd);
+ struct tdgram_bsd_recvfrom_state *state =
+ tevent_req_data(req,
+ struct tdgram_bsd_recvfrom_state);
- tdgram_bsd_set_readable_handler(bsds, NULL, NULL, NULL);
+ if (state->dgram != NULL) {
+ struct tdgram_bsd *bsds =
+ tdgram_context_data(state->dgram,
+ struct tdgram_bsd);
- return 0;
+ tdgram_bsd_set_readable_handler(bsds, NULL, NULL, NULL);
+ state->dgram = NULL;
+ }
}
static void tdgram_bsd_recvfrom_handler(void *private_data);
state->len = 0;
state->src = NULL;
- talloc_set_destructor(state, tdgram_bsd_recvfrom_destructor);
+ tevent_req_set_cleanup_fn(req, tdgram_bsd_recvfrom_cleanup);
if (bsds->fd == -1) {
tevent_req_error(req, ENOTCONN);
ssize_t ret;
};
-static int tdgram_bsd_sendto_destructor(struct tdgram_bsd_sendto_state *state)
+static void tdgram_bsd_sendto_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
- struct tdgram_bsd *bsds = tdgram_context_data(state->dgram,
- struct tdgram_bsd);
+ struct tdgram_bsd_sendto_state *state =
+ tevent_req_data(req,
+ struct tdgram_bsd_sendto_state);
- tdgram_bsd_set_writeable_handler(bsds, NULL, NULL, NULL);
+ if (state->dgram != NULL) {
+ struct tdgram_bsd *bsds =
+ tdgram_context_data(state->dgram,
+ struct tdgram_bsd);
- return 0;
+ tdgram_bsd_set_writeable_handler(bsds, NULL, NULL, NULL);
+ state->dgram = NULL;
+ }
}
static void tdgram_bsd_sendto_handler(void *private_data);
state->dst = dst;
state->ret = -1;
- talloc_set_destructor(state, tdgram_bsd_sendto_destructor);
+ tevent_req_set_cleanup_fn(req, tdgram_bsd_sendto_cleanup);
if (bsds->fd == -1) {
tevent_req_error(req, ENOTCONN);
int ret;
};
-static int tstream_bsd_readv_destructor(struct tstream_bsd_readv_state *state)
+static void tstream_bsd_readv_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
- struct tstream_bsd *bsds = tstream_context_data(state->stream,
- struct tstream_bsd);
+ struct tstream_bsd_readv_state *state =
+ tevent_req_data(req,
+ struct tstream_bsd_readv_state);
- tstream_bsd_set_readable_handler(bsds, NULL, NULL, NULL);
+ if (state->stream != NULL) {
+ struct tstream_bsd *bsds =
+ tstream_context_data(state->stream,
+ struct tstream_bsd);
- return 0;
+ tstream_bsd_set_readable_handler(bsds, NULL, NULL, NULL);
+ state->stream = NULL;
+ }
}
static void tstream_bsd_readv_handler(void *private_data);
state->count = count;
state->ret = 0;
- talloc_set_destructor(state, tstream_bsd_readv_destructor);
+ tevent_req_set_cleanup_fn(req, tstream_bsd_readv_cleanup);
if (bsds->fd == -1) {
tevent_req_error(req, ENOTCONN);
int ret;
};
-static int tstream_bsd_writev_destructor(struct tstream_bsd_writev_state *state)
+static void tstream_bsd_writev_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
- struct tstream_bsd *bsds = tstream_context_data(state->stream,
- struct tstream_bsd);
+ struct tstream_bsd_writev_state *state =
+ tevent_req_data(req,
+ struct tstream_bsd_writev_state);
- tstream_bsd_set_writeable_handler(bsds, NULL, NULL, NULL);
+ if (state->stream != NULL) {
+ struct tstream_bsd *bsds =
+ tstream_context_data(state->stream,
+ struct tstream_bsd);
- return 0;
+ tstream_bsd_set_writeable_handler(bsds, NULL, NULL, NULL);
+ state->stream = NULL;
+ }
}
static void tstream_bsd_writev_handler(void *private_data);
state->count = count;
state->ret = 0;
- talloc_set_destructor(state, tstream_bsd_writev_destructor);
+ tevent_req_set_cleanup_fn(req, tstream_bsd_writev_cleanup);
if (bsds->fd == -1) {
tevent_req_error(req, ENOTCONN);
struct tstream_bsd_connect_state {
int fd;
struct tevent_fd *fde;
- struct tstream_conext *stream;
struct tsocket_address *local;
};
-static int tstream_bsd_connect_destructor(struct tstream_bsd_connect_state *state)
+static void tstream_bsd_connect_cleanup(struct tevent_req *req,
+ enum tevent_req_state req_state)
{
+ struct tstream_bsd_connect_state *state =
+ tevent_req_data(req,
+ struct tstream_bsd_connect_state);
+
+ if (req_state == TEVENT_REQ_DONE) {
+ return;
+ }
+
TALLOC_FREE(state->fde);
if (state->fd != -1) {
close(state->fd);
state->fd = -1;
}
-
- return 0;
}
static void tstream_bsd_connect_fde_handler(struct tevent_context *ev,
state->fd = -1;
state->fde = NULL;
- talloc_set_destructor(state, tstream_bsd_connect_destructor);
+ tevent_req_set_cleanup_fn(req, tstream_bsd_connect_cleanup);
/* give the wrappers a chance to report an error */
if (sys_errno != 0) {