diff options
author | Tobias Brunner <tobias@strongswan.org> | 2010-10-15 17:24:23 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2010-10-15 17:30:21 +0200 |
commit | fa208494319efd0bc48fa63bfff9dac9bef84a55 (patch) | |
tree | cd20dae44e8f03eec2d505400830db0b84a7d656 /src/libcharon/plugins/socket_default/socket_default_plugin.c | |
parent | 4de8398f931e1777c685710c87ad412bcf6715c4 (diff) | |
download | strongswan-fa208494319efd0bc48fa63bfff9dac9bef84a55.tar.bz2 strongswan-fa208494319efd0bc48fa63bfff9dac9bef84a55.tar.xz |
Deferred instantiation of socket implmentations until registration.
Instantiating the implementations on plugin load was problematic
in case multiple socket plugins were loaded. Now, the first one
registered is instantiated.
Diffstat (limited to 'src/libcharon/plugins/socket_default/socket_default_plugin.c')
-rw-r--r-- | src/libcharon/plugins/socket_default/socket_default_plugin.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/libcharon/plugins/socket_default/socket_default_plugin.c b/src/libcharon/plugins/socket_default/socket_default_plugin.c index 29549b0b1..b5dea68b6 100644 --- a/src/libcharon/plugins/socket_default/socket_default_plugin.c +++ b/src/libcharon/plugins/socket_default/socket_default_plugin.c @@ -1,4 +1,6 @@ /* + * Copyright (C) 2010 Tobias Brunner + * Hochschule fuer Technik Rapperswil * Copyright (C) 2010 Martin Willi * Copyright (C) 2010 revosec AG * @@ -31,17 +33,13 @@ struct private_socket_default_plugin_t { */ socket_default_plugin_t public; - /** - * Socket instance. - */ - socket_default_socket_t *socket; }; METHOD(plugin_t, destroy, void, private_socket_default_plugin_t *this) { - charon->socket->remove_socket(charon->socket, &this->socket->socket); - this->socket->destroy(this->socket); + charon->socket->remove_socket(charon->socket, + (socket_constructor_t)socket_default_socket_create); free(this); } @@ -58,15 +56,10 @@ plugin_t *socket_default_plugin_create() .destroy = _destroy, }, }, - .socket = socket_default_socket_create(), ); - if (!this->socket) - { - free(this); - return NULL; - } - charon->socket->add_socket(charon->socket, &this->socket->socket); + charon->socket->add_socket(charon->socket, + (socket_constructor_t)socket_default_socket_create); return &this->public.plugin; } |