summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-12-13 15:23:24 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-12-13 15:23:24 +0000
commitb04103301a98b3522f92882604a2c22c6d6e8e7d (patch)
tree0bd896cae7a815e08fe1eb49f33f494a03fb359c
parent92dfd8e1b1af9fa155b65adc22aec87470eb2d67 (diff)
downloadlasso-b04103301a98b3522f92882604a2c22c6d6e8e7d.tar.gz
lasso-b04103301a98b3522f92882604a2c22c6d6e8e7d.tar.xz
lasso-b04103301a98b3522f92882604a2c22c6d6e8e7d.zip
dealing with errors; now like this:
return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_ADD_PROVIDER_FAILED);
-rw-r--r--lasso/id-ff/defederation.c10
-rw-r--r--lasso/id-ff/login.c10
-rw-r--r--lasso/id-ff/logout.c14
-rw-r--r--lasso/id-ff/name_identifier_mapping.c16
-rw-r--r--lasso/id-ff/name_registration.c24
-rw-r--r--lasso/id-ff/server.c3
-rw-r--r--lasso/xml/tools.c7
-rw-r--r--lasso/xml/tools.h10
8 files changed, 51 insertions, 43 deletions
diff --git a/lasso/id-ff/defederation.c b/lasso/id-ff/defederation.c
index 5b037520..ab27d73b 100644
--- a/lasso/id-ff/defederation.c
+++ b/lasso/id-ff/defederation.c
@@ -161,12 +161,11 @@ lasso_defederation_init_notification(LassoDefederation *defederation, gchar *rem
return -1;
}
-
remote_provider = g_hash_table_lookup(
profile->server->providers, profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Remote provider not found");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* get federation */
@@ -354,8 +353,9 @@ lasso_defederation_validate_notification(LassoDefederation *defederation)
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Provider not found");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL,
+ LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* build the QUERY and the url. Dont need to sign the query,
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 33a4ca41..d42f5d89 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -586,7 +586,8 @@ lasso_login_build_authn_request_msg(LassoLogin *login, const gchar *remote_provi
remote_provider = g_hash_table_lookup(LASSO_PROFILE(login)->server->providers,
LASSO_PROFILE(login)->remote_providerID);
if (remote_provider == NULL) {
- return -1; /* XXX */
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ LASSO_PROFILE(login)->remote_providerID);
}
protocolProfile = LASSO_LIB_AUTHN_REQUEST(LASSO_PROFILE(login)->request)->ProtocolProfile;
@@ -789,8 +790,8 @@ lasso_login_build_request_msg(LassoLogin *login)
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Remote provider not found");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
profile->msg_url = lasso_provider_get_metadata_one(remote_provider, "SoapEndpoint");
return 0;
@@ -1004,8 +1005,7 @@ lasso_login_init_idp_initiated_authn_request(LassoLogin *login,
if (remote_providerID == NULL) {
first_providerID = lasso_server_get_first_providerID(LASSO_PROFILE(login)->server);
LASSO_PROFILE(login)->remote_providerID = first_providerID;
- }
- else {
+ } else {
LASSO_PROFILE(login)->remote_providerID = g_strdup(remote_providerID);
}
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index e40654fb..e5a14cbb 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -75,8 +75,8 @@ lasso_logout_build_request_msg(LassoLogout *logout)
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* build the logout request message */
@@ -322,8 +322,8 @@ lasso_logout_init_request(LassoLogout *logout, char *remote_providerID,
remote_provider = g_hash_table_lookup(
profile->server->providers, profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Remote provider not found");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* before setting profile->request, verify if it is already set */
@@ -654,8 +654,10 @@ lasso_logout_validate_request(LassoLogout *logout)
/* get the provider */
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
- if (remote_provider == NULL)
- return -1;
+ if (remote_provider == NULL) {
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
+ }
/* Set LogoutResponse */
profile->response = NULL;
diff --git a/lasso/id-ff/name_identifier_mapping.c b/lasso/id-ff/name_identifier_mapping.c
index 06131ea9..cc73a150 100644
--- a/lasso/id-ff/name_identifier_mapping.c
+++ b/lasso/id-ff/name_identifier_mapping.c
@@ -43,8 +43,8 @@ lasso_name_identifier_mapping_build_request_msg(LassoNameIdentifierMapping *mapp
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Provider %s not found", profile->remote_providerID);
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
if (remote_provider->role != LASSO_PROVIDER_ROLE_IDP) {
@@ -82,8 +82,8 @@ lasso_name_identifier_mapping_build_response_msg(LassoNameIdentifierMapping *map
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Provider %s not found", profile->remote_providerID);
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
if (remote_provider->role != LASSO_PROVIDER_ROLE_SP) {
@@ -141,8 +141,8 @@ lasso_name_identifier_mapping_init_request(LassoNameIdentifierMapping *mapping,
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
if (remote_provider->role != LASSO_PROVIDER_ROLE_IDP) {
message(G_LOG_LEVEL_CRITICAL, "Init request method is forbidden for an IDP");
@@ -269,8 +269,8 @@ lasso_name_identifier_mapping_process_response_msg(LassoNameIdentifierMapping *m
remote_provider = g_hash_table_lookup(profile->server->providers,
LASSO_LIB_NAME_IDENTIFIER_MAPPING_RESPONSE(profile->response)->ProviderID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* verify signature */
diff --git a/lasso/id-ff/name_registration.c b/lasso/id-ff/name_registration.c
index b6dde3ac..da8cbbad 100644
--- a/lasso/id-ff/name_registration.c
+++ b/lasso/id-ff/name_registration.c
@@ -63,8 +63,8 @@ lasso_name_registration_build_request_msg(LassoNameRegistration *name_registrati
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
if (profile->http_request_method == LASSO_HTTP_METHOD_SOAP) {
@@ -118,8 +118,8 @@ lasso_name_registration_build_response_msg(LassoNameRegistration *name_registrat
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
if (profile->http_request_method == LASSO_HTTP_METHOD_SOAP) {
@@ -190,8 +190,8 @@ lasso_name_registration_init_request(LassoNameRegistration *name_registration,
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* Get federation */
@@ -386,8 +386,8 @@ lasso_name_registration_process_response_msg(LassoNameRegistration *name_registr
remote_provider = g_hash_table_lookup(profile->server->providers,
LASSO_LIB_STATUS_RESPONSE(profile->response)->ProviderID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* verify signature */
@@ -416,8 +416,8 @@ lasso_name_registration_process_response_msg(LassoNameRegistration *name_registr
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Remote provider not found");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
if (remote_provider->role == LASSO_PROVIDER_ROLE_SP) {
@@ -503,8 +503,8 @@ lasso_name_registration_validate_request(LassoNameRegistration *name_registratio
remote_provider = g_hash_table_lookup(profile->server->providers,
profile->remote_providerID);
if (remote_provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "XXX");
- return -1;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND,
+ profile->remote_providerID);
}
/* update name identifier in federation */
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index cdec3b0b..3cb78ad5 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -57,8 +57,7 @@ lasso_server_add_provider(LassoServer *server, LassoProviderRole role,
provider = lasso_provider_new(role, metadata, public_key, ca_cert_chain);
if (provider == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "Failed to add new provider.");
- return LASSO_SERVER_ERROR_ADD_PROVIDER_FAILED;
+ return error_code(G_LOG_LEVEL_CRITICAL, LASSO_SERVER_ERROR_ADD_PROVIDER_FAILED);
}
g_hash_table_insert(server->providers, g_strdup(provider->ProviderID), provider);
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index 1f81cb85..8853c4ab 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -559,7 +559,7 @@ char** urlencoded_to_strings(const char *str)
return result;
}
-void
+int
_debug(GLogLevelFlags level, const char *filename, int line,
const char *function, const char *format, ...)
{
@@ -581,4 +581,9 @@ _debug(GLogLevelFlags level, const char *filename, int line,
} else {
g_log("Lasso", level, "%s\t%s", date, debug_string);
}
+
+ /* returns 0 so it can be chained to another value (with ||) in
+ * error_code macro
+ */
+ return 0;
}
diff --git a/lasso/xml/tools.h b/lasso/xml/tools.h
index 72e6fc5c..f20d5af5 100644
--- a/lasso/xml/tools.h
+++ b/lasso/xml/tools.h
@@ -65,19 +65,21 @@ LASSO_EXPORT char* lasso_sha1(const char *str);
char** urlencoded_to_strings(const char *str);
-void _debug(GLogLevelFlags level, const char *filename, int line,
+int _debug(GLogLevelFlags level, const char *filename, int line,
const char *function, const char *format, ...);
#if defined LASSO_DEBUG
# define debug(format, args...) \
- _debug(G_LOG_LEVEL_DEBUG, __FILE__, __LINE__,__FUNCTION__, format, ##args);
+ _debug(G_LOG_LEVEL_DEBUG, __FILE__, __LINE__,__FUNCTION__, format, ##args)
#else
-# define debug(format, ...);
+# define debug(format, ...)
#endif
#define message(level, format, args...) \
- _debug(level, __FILE__, __LINE__, __FUNCTION__, format, ##args);
+ _debug(level, __FILE__, __LINE__, __FUNCTION__, format, ##args)
+#define error_code(level, errorcode, args...) \
+ (message(level, lasso_strerror(errorcode), ##args) || errorcode);
#ifdef __cplusplus
}