summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2006-02-20 21:55:55 +0000
committerjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2006-02-20 21:55:55 +0000
commit1026ce61fc4cdc0610a5f80e39591ad7ea6911a8 (patch)
treeba4a8296a63fe161b3a17ec02d6db7b1db99d939 /src
parent9f38fbd4af19d5f80ad37494d4f95fd5b008a17b (diff)
downloadneon-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.c54
-rw-r--r--src/ne_session.c57
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);
+}