Make listener creation const-correct
The parameters passed to functions that create new listeners are now of type const char*.
This commit is contained in:
@ -59,9 +59,9 @@ typedef struct servlistener
|
||||
struct servlistener *next; /**< Next service protocol */
|
||||
} SERV_LISTENER;
|
||||
|
||||
SERV_LISTENER *listener_alloc(struct service* service, char *name, char *protocol,
|
||||
char *address, unsigned short port, char *authenticator,
|
||||
char* options, SSL_LISTENER *ssl);
|
||||
SERV_LISTENER* listener_alloc(struct service* service, const char* name, const char *protocol,
|
||||
const char *address, unsigned short port, const char *authenticator,
|
||||
const char* auth_options, SSL_LISTENER *ssl);
|
||||
void listener_free(SERV_LISTENER* listener);
|
||||
int listener_set_ssl_version(SSL_LISTENER *ssl_listener, char* version);
|
||||
void listener_set_certificates(SSL_LISTENER *ssl_listener, char* cert, char* key, char* ca_cert);
|
||||
|
@ -192,10 +192,9 @@ extern SERVICE *service_alloc(const char *, const char *);
|
||||
extern int service_free(SERVICE *);
|
||||
extern SERVICE *service_find(const char *);
|
||||
extern int service_isvalid(SERVICE *);
|
||||
extern int serviceAddProtocol(SERVICE *service, char *name, char *protocol,
|
||||
char *address, unsigned short port,
|
||||
char *authenticator, char *options,
|
||||
SSL_LISTENER *ssl);
|
||||
extern bool serviceAddProtocol(SERVICE *service, const char *name, const char *protocol,
|
||||
const char *address, unsigned short port, const char *authenticator,
|
||||
const char *options, SSL_LISTENER *ssl);
|
||||
extern int serviceHasProtocol(SERVICE *service, const char *protocol,
|
||||
const char* address, unsigned short port);
|
||||
extern void serviceAddBackend(SERVICE *, SERVER *);
|
||||
|
@ -55,61 +55,67 @@ static RSA *tmp_rsa_callback(SSL *s, int is_export, int keylength);
|
||||
* @return New listener object or NULL if unable to allocate
|
||||
*/
|
||||
SERV_LISTENER *
|
||||
listener_alloc(struct service* service, char* name, char *protocol, char *address,
|
||||
unsigned short port, char *authenticator, char* auth_options, SSL_LISTENER *ssl)
|
||||
listener_alloc(struct service* service, const char* name, const char *protocol,
|
||||
const char *address, unsigned short port, const char *authenticator,
|
||||
const char* auth_options, SSL_LISTENER *ssl)
|
||||
{
|
||||
char *my_address = NULL;
|
||||
if (address)
|
||||
{
|
||||
address = MXS_STRDUP(address);
|
||||
if (!address)
|
||||
my_address = MXS_STRDUP(address);
|
||||
if (!my_address)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
char *my_authenticator = NULL;
|
||||
|
||||
if (authenticator)
|
||||
{
|
||||
authenticator = MXS_STRDUP(authenticator);
|
||||
my_authenticator = MXS_STRDUP(authenticator);
|
||||
}
|
||||
else if ((authenticator = (char*)get_default_authenticator(protocol)) == NULL ||
|
||||
(authenticator = MXS_STRDUP(authenticator)) == NULL)
|
||||
else if ((authenticator = get_default_authenticator(protocol)) == NULL ||
|
||||
(my_authenticator = MXS_STRDUP(authenticator)) == NULL)
|
||||
{
|
||||
MXS_ERROR("No authenticator defined for listener '%s' and could not get "
|
||||
"default authenticator for protocol '%s'.", name, protocol);
|
||||
MXS_FREE(my_address);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *auth_instance = NULL;
|
||||
|
||||
if (!authenticator_init(&auth_instance, authenticator, auth_options))
|
||||
if (!authenticator_init(&auth_instance, my_authenticator, auth_options))
|
||||
{
|
||||
MXS_ERROR("Failed to initialize authenticator module '%s' for "
|
||||
"listener '%s'.", authenticator, name);
|
||||
MXS_FREE(address);
|
||||
MXS_FREE(authenticator);
|
||||
"listener '%s'.", my_authenticator, name);
|
||||
MXS_FREE(my_address);
|
||||
MXS_FREE(my_authenticator);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
protocol = MXS_STRDUP(protocol);
|
||||
name = MXS_STRDUP(name);
|
||||
char *my_protocol = MXS_STRDUP(protocol);
|
||||
char *my_name = MXS_STRDUP(name);
|
||||
SERV_LISTENER *proto = (SERV_LISTENER*)MXS_MALLOC(sizeof(SERV_LISTENER));
|
||||
|
||||
if (!protocol || !proto || !name || !authenticator)
|
||||
if (!my_protocol || !proto || !my_name || !my_authenticator)
|
||||
{
|
||||
MXS_FREE(authenticator);
|
||||
MXS_FREE(protocol);
|
||||
MXS_FREE(address);
|
||||
MXS_FREE(my_authenticator);
|
||||
MXS_FREE(my_protocol);
|
||||
MXS_FREE(my_address);
|
||||
MXS_FREE(my_name);
|
||||
MXS_FREE(proto);
|
||||
MXS_FREE(name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
proto->name = name;
|
||||
proto->name = my_name;
|
||||
proto->listener = NULL;
|
||||
proto->service = service;
|
||||
proto->protocol = protocol;
|
||||
proto->address = address;
|
||||
proto->protocol = my_protocol;
|
||||
proto->address = my_address;
|
||||
proto->port = port;
|
||||
proto->authenticator = authenticator;
|
||||
proto->authenticator = my_authenticator;
|
||||
proto->ssl = ssl;
|
||||
proto->users = NULL;
|
||||
proto->resources = NULL;
|
||||
|
@ -688,11 +688,11 @@ service_free(SERVICE *service)
|
||||
* @param ssl SSL configuration
|
||||
* @return TRUE if the protocol/port could be added
|
||||
*/
|
||||
int
|
||||
serviceAddProtocol(SERVICE *service, char *name, char *protocol, char *address,
|
||||
unsigned short port, char *authenticator, char *options,
|
||||
SSL_LISTENER *ssl)
|
||||
bool serviceAddProtocol(SERVICE *service, const char *name, const char *protocol,
|
||||
const char *address, unsigned short port, const char *authenticator,
|
||||
const char *options, SSL_LISTENER *ssl)
|
||||
{
|
||||
bool rval = false;
|
||||
SERV_LISTENER *proto = listener_alloc(service, name, protocol, address,
|
||||
port, authenticator, options, ssl);
|
||||
|
||||
@ -702,10 +702,10 @@ serviceAddProtocol(SERVICE *service, char *name, char *protocol, char *address,
|
||||
proto->next = service->ports;
|
||||
service->ports = proto;
|
||||
spinlock_release(&service->spin);
|
||||
return 1;
|
||||
rval = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return rval;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user