my->connect.el = NULL;
}
- if (my->cb.shutdown) my->cb.shutdown(&my->bio);
-
return fr_bio_fd_close(&my->bio);
}
+/** Orderly shutdown.
+ *
+ */
+static void fr_bio_fd_shutdown(fr_bio_t *bio)
+{
+ fr_bio_fd_t *my = talloc_get_type_abort(bio, fr_bio_fd_t);
+
+ (void) fr_bio_fd_destructor(my);
+ talloc_set_destructor(my, NULL);
+}
+
static int fr_bio_fd_eof(fr_bio_t *bio)
{
fr_bio_fd_t *my = talloc_get_type_abort(bio, fr_bio_fd_t);
my->priv_cb.eof = fr_bio_fd_eof;
my->priv_cb.write_resume = fr_bio_fd_write_resume;
+ my->priv_cb.shutdown = fr_bio_fd_shutdown;
talloc_set_destructor(my, fr_bio_fd_destructor);
return (fr_bio_t *) my;
my->info.read_blocked = true;
my->info.write_blocked = true;
my->info.eof = true;
+ my->info.socket.fd = -1;
return 0;
}
fr_bio_retry_t *my = talloc_get_type_abort(bio, fr_bio_retry_t);
(void) fr_bio_retry_destructor(my);
+ talloc_set_destructor(my, NULL);
}
/** Allocate a #fr_bio_retry_t