annotate src/lib-oauth2/oauth2-private.h @ 21738:29066a72703a

lib-oauth2: Fix memory leak if HTTP URL parsing fails. Also delay calling the callback. The callers don't necessarily expect an immediate callback (auth/db-oauth2.c doesn't).
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 16 Mar 2017 01:12:57 +0200
parents f6d27a985066
children cb108f786fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21575
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
1 /* Copyright (c) 2017 Dovecot authors, see the included COPYING file */
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
2 #ifndef OAUTH2_PRIVATE_H
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
3 #define OAUTH2_PRIVATE_H 1
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
4
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
5 struct oauth2_request {
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
6 pool_t pool;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
7
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
8 const struct oauth2_settings *set;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
9 struct http_client_request *req;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
10 struct json_parser *parser;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
11 struct istream *is;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
12 struct io *io;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
13
21738
29066a72703a lib-oauth2: Fix memory leak if HTTP URL parsing fails.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21575
diff changeset
14 const char *delayed_error;
29066a72703a lib-oauth2: Fix memory leak if HTTP URL parsing fails.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21575
diff changeset
15 struct timeout *to_delayed_error;
29066a72703a lib-oauth2: Fix memory leak if HTTP URL parsing fails.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21575
diff changeset
16
21575
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
17 const char *username;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
18
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
19 void (*json_parsed_cb)(struct oauth2_request*, bool success,
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
20 const char *error);
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
21
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
22 ARRAY_TYPE(oauth2_field) fields;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
23 char *field_name;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
24
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
25 oauth2_token_validation_callback_t *tv_callback;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
26 void *tv_context;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
27
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
28 oauth2_introspection_callback_t *is_callback;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
29 void *is_context;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
30
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
31 oauth2_refresh_callback_t *re_callback;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
32 void *re_context;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
33
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
34 /* indicates whether token is valid */
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
35 bool valid:1;
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
36 };
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
37
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
38 void oauth2_request_set_headers(struct oauth2_request *req,
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
39 const struct oauth2_request_input *input);
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
40
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
41 void oauth2_request_free_internal(struct oauth2_request *req);
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
42
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
43 void oauth2_parse_json(struct oauth2_request *req);
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
44
f6d27a985066 lib-oauth2: Add support library for OAUTH2
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff changeset
45 #endif