~ubuntu-branches/ubuntu/hardy/lasso/hardy

« back to all changes in this revision

Viewing changes to lasso/id-ff/session.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Bienia
  • Date: 2007-07-31 21:35:26 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070731213526-oc6jw5mprcd5tjyy
Tags: 2.0.0-1ubuntu1
* Merge from debian unstable. Remaining changes:
  + debian/control:
    - Modify Maintainer value to match DebianMaintainerField spec.
* debian/rules:
  + Add CC=gcc-4.2 to the configure call else configure won't find jni.h
    from libgcj8-dev.
* configure{,.ac}:
  + Add missing quotes around the value for PHP[45]_LIBS.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $Id: session.c,v 1.59 2005/11/21 18:51:52 fpeters Exp $
 
1
/* $Id: session.c,v 1.63 2006/12/27 23:50:15 fpeters Exp $
2
2
 *
3
3
 * Lasso - A free implementation of the Liberty Alliance specifications.
4
4
 *
49
49
gint
50
50
lasso_session_add_assertion(LassoSession *session, char *providerID, LassoNode *assertion)
51
51
{
52
 
        g_return_val_if_fail(session != NULL, -1);
53
 
        g_return_val_if_fail(providerID != NULL, -2);
54
 
        g_return_val_if_fail(assertion != NULL, -3);
 
52
        g_return_val_if_fail(session != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
53
        g_return_val_if_fail(providerID != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
54
        g_return_val_if_fail(assertion != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
55
55
 
56
56
        g_hash_table_insert(session->assertions, g_strdup(providerID), assertion);
57
57
 
71
71
 * Return value: 0 on success; or a negative value otherwise.
72
72
 **/
73
73
gint
74
 
lasso_session_add_status(LassoSession *session, char *providerID, LassoSamlpStatus *status)
 
74
lasso_session_add_status(LassoSession *session, char *providerID, LassoNode *status)
75
75
{
76
 
        g_return_val_if_fail(session != NULL, -1);
77
 
        g_return_val_if_fail(providerID != NULL, -2);
78
 
        g_return_val_if_fail(status != NULL, -3);
 
76
        g_return_val_if_fail(session != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
77
        g_return_val_if_fail(providerID != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
78
        g_return_val_if_fail(status != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
79
79
 
80
80
        g_hash_table_insert(session->private_data->status, g_strdup(providerID), status);
81
81
 
117
117
 * Gets the assertions for the given @provider_id.
118
118
 *
119
119
 * Return value: a GList* of #LassoSamlAssertion.  Caller must free the GList
120
 
 *     and the assertions it contains.
 
120
 *     but NOT the assertions it contains.
121
121
 **/
122
122
GList*
123
123
lasso_session_get_assertions(LassoSession *session, const char *provider_id)
125
125
        GList *r = NULL;
126
126
        LassoSamlAssertion *assertion;
127
127
 
 
128
        if (session == NULL) {
 
129
                return NULL;
 
130
        }
 
131
 
128
132
        if (provider_id == NULL) {
129
133
                g_hash_table_foreach(session->assertions, (GHFunc)add_assertion_to_list, &r);
130
134
        } else {
131
135
                assertion = g_hash_table_lookup(session->assertions, provider_id);
132
136
                if (assertion)
133
 
                        r = g_list_append(r, g_object_ref(assertion));
 
137
                        r = g_list_append(r, assertion);
134
138
        }
135
139
        return r;
136
140
}
146
150
 * Return value: the status or NULL if it didn't exist.  This #LassoSamlpStatus
147
151
 *      is internally allocated and must not be freed by the caller.
148
152
 **/
149
 
LassoSamlpStatus*
 
153
LassoNode*
150
154
lasso_session_get_status(LassoSession *session, gchar *providerID)
151
155
{
 
156
        if (session == NULL) {
 
157
                return NULL;
 
158
        }
152
159
        return g_hash_table_lookup(session->private_data->status, providerID);
153
160
}
154
161
 
175
182
        GList *element;
176
183
        int length;
177
184
 
 
185
        if (session == NULL) {
 
186
                return NULL;
 
187
        }
 
188
 
178
189
        length = g_hash_table_size(session->assertions);
179
190
 
180
191
        if (length == 0)
202
213
void
203
214
lasso_session_init_provider_ids(LassoSession *session)
204
215
{
 
216
        if (session == NULL) {
 
217
                return;
 
218
        }
 
219
 
205
220
        if (session->private_data->providerIDs) {
206
221
                g_list_free(session->private_data->providerIDs);
207
222
                session->private_data->providerIDs = NULL;
243
258
gint
244
259
lasso_session_remove_assertion(LassoSession *session, gchar *providerID)
245
260
{
 
261
        g_return_val_if_fail(session != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
262
        g_return_val_if_fail(providerID != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
263
 
246
264
        if (g_hash_table_remove(session->assertions, providerID)) {
247
265
                session->is_dirty = TRUE;
248
266
                return 0;
249
267
        }
250
268
 
251
 
        return LASSO_ERROR_UNDEFINED; /* assertion not found */
 
269
        return LASSO_PROFILE_ERROR_MISSING_ASSERTION;
252
270
}
253
271
 
254
272
/**
263
281
gint
264
282
lasso_session_remove_status(LassoSession *session, gchar *providerID)
265
283
{
 
284
        g_return_val_if_fail(session != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
285
        g_return_val_if_fail(providerID != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
 
286
 
266
287
        if (g_hash_table_remove(session->private_data->status, providerID)) {
267
288
                session->is_dirty = TRUE;
268
289
                return 0;
269
290
        }
270
291
 
271
 
        return LASSO_ERROR_UNDEFINED; /* status not found */
 
292
        return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE;
272
293
}
273
294
 
274
295
/*****************************************************************************/
346
367
                        while (n && n->type != XML_ELEMENT_NODE) n = n->next;
347
368
                        
348
369
                        if (n) {
349
 
                                LassoSamlpStatus *status;
350
 
                                status = LASSO_SAMLP_STATUS(lasso_node_new_from_xmlNode(n));
 
370
                                LassoNode *status;
 
371
                                status = lasso_node_new_from_xmlNode(n);
351
372
                                g_hash_table_insert(session->private_data->status,
352
373
                                                xmlGetProp(t, (xmlChar*)"RemoteProviderID"),
353
374
                                                status);