diff options
author | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2006-02-20 21:55:55 +0000 |
---|---|---|
committer | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2006-02-20 21:55:55 +0000 |
commit | 1026ce61fc4cdc0610a5f80e39591ad7ea6911a8 (patch) | |
tree | ba4a8296a63fe161b3a17ec02d6db7b1db99d939 /src | |
parent | 9f38fbd4af19d5f80ad37494d4f95fd5b008a17b (diff) | |
download | neon-1026ce61fc4cdc0610a5f80e39591ad7ea6911a8.tar.gz |
* src/ne_session.c (add_hook, ne_hook_create_request,
ne_hook_pre_send, ne_hook_post_send, ne_hook_destroy_request,
ne_hook_destroy_session, ne_set_session_private): Moved here...
* src/ne_request.c: ...from here.
(ne_set_request_private): Inline add_hook.
git-svn-id: http://svn.webdav.org/repos/projects/neon/trunk@926 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845
Diffstat (limited to 'src')
-rw-r--r-- | src/ne_request.c | 54 | ||||
-rw-r--r-- | src/ne_session.c | 57 |
2 files changed, 62 insertions, 49 deletions
diff --git a/src/ne_request.c b/src/ne_request.c index 0863c77..c755355 100644 --- a/src/ne_request.c +++ b/src/ne_request.c @@ -285,66 +285,24 @@ void *ne_get_session_private(ne_session *sess, const char *id) return get_private(sess->private, id); } -typedef void (*void_fn)(void); - -#define ADD_HOOK(hooks, fn, ud) add_hook(&(hooks), NULL, (void_fn)(fn), (ud)) - -static void add_hook(struct hook **hooks, const char *id, void_fn fn, void *ud) +void ne_set_request_private(ne_request *req, const char *id, void *userdata) { struct hook *hk = ne_malloc(sizeof (struct hook)), *pos; - if (*hooks != NULL) { - for (pos = *hooks; pos->next != NULL; pos = pos->next) + if (req->private != NULL) { + for (pos = req->private; pos->next != NULL; pos = pos->next) /* nullop */; pos->next = hk; } else { - *hooks = hk; + req->private = hk; } hk->id = id; - hk->fn = fn; - hk->userdata = ud; + hk->fn = NULL; + hk->userdata = userdata; hk->next = NULL; } -void ne_hook_create_request(ne_session *sess, - ne_create_request_fn fn, void *userdata) -{ - ADD_HOOK(sess->create_req_hooks, fn, userdata); -} - -void ne_hook_pre_send(ne_session *sess, ne_pre_send_fn fn, void *userdata) -{ - ADD_HOOK(sess->pre_send_hooks, fn, userdata); -} - -void ne_hook_post_send(ne_session *sess, ne_post_send_fn fn, void *userdata) -{ - ADD_HOOK(sess->post_send_hooks, fn, userdata); -} - -void ne_hook_destroy_request(ne_session *sess, - ne_destroy_req_fn fn, void *userdata) -{ - ADD_HOOK(sess->destroy_req_hooks, fn, userdata); -} - -void ne_hook_destroy_session(ne_session *sess, - ne_destroy_sess_fn fn, void *userdata) -{ - ADD_HOOK(sess->destroy_sess_hooks, fn, userdata); -} - -void ne_set_session_private(ne_session *sess, const char *id, void *userdata) -{ - add_hook(&sess->private, id, NULL, userdata); -} - -void ne_set_request_private(ne_request *req, const char *id, void *userdata) -{ - add_hook(&req->private, id, NULL, userdata); -} - static ssize_t body_string_send(void *userdata, char *buffer, size_t count) { ne_request *req = userdata; diff --git a/src/ne_session.c b/src/ne_session.c index 707be3d..202fc86 100644 --- a/src/ne_session.c +++ b/src/ne_session.c @@ -1,6 +1,6 @@ /* HTTP session handling - Copyright (C) 1999-2005, Joe Orton <joe@manyfish.co.uk> + Copyright (C) 1999-2006, Joe Orton <joe@manyfish.co.uk> Portions are: Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi> @@ -267,3 +267,58 @@ void ne_ssl_trust_cert(ne_session *sess, const ne_ssl_certificate *cert) ne_ssl_context_trustcert(sess->ssl_context, cert); #endif } + +typedef void (*void_fn)(void); + +#define ADD_HOOK(hooks, fn, ud) add_hook(&(hooks), NULL, (void_fn)(fn), (ud)) + +static void add_hook(struct hook **hooks, const char *id, void_fn fn, void *ud) +{ + struct hook *hk = ne_malloc(sizeof (struct hook)), *pos; + + if (*hooks != NULL) { + for (pos = *hooks; pos->next != NULL; pos = pos->next) + /* nullop */; + pos->next = hk; + } else { + *hooks = hk; + } + + hk->id = id; + hk->fn = fn; + hk->userdata = ud; + hk->next = NULL; +} + +void ne_hook_create_request(ne_session *sess, + ne_create_request_fn fn, void *userdata) +{ + ADD_HOOK(sess->create_req_hooks, fn, userdata); +} + +void ne_hook_pre_send(ne_session *sess, ne_pre_send_fn fn, void *userdata) +{ + ADD_HOOK(sess->pre_send_hooks, fn, userdata); +} + +void ne_hook_post_send(ne_session *sess, ne_post_send_fn fn, void *userdata) +{ + ADD_HOOK(sess->post_send_hooks, fn, userdata); +} + +void ne_hook_destroy_request(ne_session *sess, + ne_destroy_req_fn fn, void *userdata) +{ + ADD_HOOK(sess->destroy_req_hooks, fn, userdata); +} + +void ne_hook_destroy_session(ne_session *sess, + ne_destroy_sess_fn fn, void *userdata) +{ + ADD_HOOK(sess->destroy_sess_hooks, fn, userdata); +} + +void ne_set_session_private(ne_session *sess, const char *id, void *userdata) +{ + add_hook(&sess->private, id, NULL, userdata); +} |