summaryrefslogtreecommitdiff
path: root/src/ne_session.c
diff options
context:
space:
mode:
authorjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2004-10-02 19:38:59 +0000
committerjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2004-10-02 19:38:59 +0000
commit3283fd5d9bdc734fed8276dd4675833e02670cfe (patch)
tree51e55a698b4d698ff8835cd383661c964865897a /src/ne_session.c
parent08c4265e806d73805c51fa67b64aa33861740679 (diff)
downloadneon-3283fd5d9bdc734fed8276dd4675833e02670cfe.tar.gz
Merge trunk up to current neon CVS HEAD.
git-svn-id: http://svn.webdav.org/repos/projects/neon/trunk@256 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845
Diffstat (limited to 'src/ne_session.c')
-rw-r--r--src/ne_session.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/src/ne_session.c b/src/ne_session.c
index 04b777e..49f1634 100644
--- a/src/ne_session.c
+++ b/src/ne_session.c
@@ -1,6 +1,6 @@
/*
HTTP session handling
- Copyright (C) 1999-2003, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 1999-2004, Joe Orton <joe@manyfish.co.uk>
Portions are:
Copyright (C) 1999-2000 Tommi Komulainen <Tommi.Komulainen@iki.fi>
@@ -33,6 +33,10 @@
#include <errno.h>
#endif
+#ifdef NE_HAVE_IDNA
+#include <idna.h>
+#endif
+
#include "ne_session.h"
#include "ne_alloc.h"
#include "ne_utils.h"
@@ -84,7 +88,7 @@ void ne_session_destroy(ne_session *sess)
ne_close_connection(sess);
}
-#ifdef NEON_SSL
+#ifdef NE_HAVE_SSL
if (sess->ssl_context)
ne_ssl_context_destroy(sess->ssl_context);
@@ -118,6 +122,14 @@ static void set_hostport(struct host_info *host, unsigned int defaultport)
static void
set_hostinfo(struct host_info *info, const char *hostname, unsigned int port)
{
+#ifdef NE_HAVE_IDNA
+ char *ihost;
+
+#define FLAGS IDNA_USE_STD3_ASCII_RULES
+ if (idna_to_ascii_8z(hostname, &ihost, FLAGS) == IDNA_SUCCESS)
+ info->hostname = ihost;
+ else /* fall back to use provided hostname string */
+#endif
info->hostname = ne_strdup(hostname);
info->port = port;
}
@@ -139,7 +151,7 @@ ne_session *ne_session_create(const char *scheme,
set_hostinfo(&sess->server, hostname, port);
set_hostport(&sess->server, sess->use_ssl?443:80);
-#ifdef NEON_SSL
+#ifdef NE_HAVE_SSL
if (sess->use_ssl) {
sess->ssl_context = ne_ssl_context_create();
}
@@ -147,8 +159,6 @@ ne_session *ne_session_create(const char *scheme,
sess->scheme = ne_strdup(scheme);
- /* Default expect-100 to OFF. */
- sess->expect100_works = -1;
return sess;
}
@@ -160,6 +170,12 @@ void ne_session_proxy(ne_session *sess, const char *hostname,
set_hostinfo(&sess->proxy, hostname, port);
}
+void ne_set_addrlist(ne_session *sess, const ne_inet_addr **addrs, size_t n)
+{
+ sess->addrlist = addrs;
+ sess->numaddrs = n;
+}
+
void ne_set_error(ne_session *sess, const char *format, ...)
{
va_list params;
@@ -184,15 +200,6 @@ void ne_set_status(ne_session *sess,
sess->notify_ud = userdata;
}
-void ne_set_expect100(ne_session *sess, int use_expect100)
-{
- if (use_expect100) {
- sess->expect100_works = 1;
- } else {
- sess->expect100_works = -1;
- }
-}
-
void ne_set_persist(ne_session *sess, int persist)
{
sess->no_persist = !persist;
@@ -268,7 +275,7 @@ void ne_ssl_provide_clicert(ne_session *sess,
void ne_ssl_trust_cert(ne_session *sess, const ne_ssl_certificate *cert)
{
-#ifdef NEON_SSL
+#ifdef NE_HAVE_SSL
ne_ssl_ctx_trustcert(sess->ssl_context, cert);
#endif
}