diff options
author | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2008-10-09 20:18:52 +0000 |
---|---|---|
committer | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2008-10-09 20:18:52 +0000 |
commit | 7dbf6935b36ef6929f44ba277b1b569e780b96c7 (patch) | |
tree | e12ba5bf23a8a68cbaa75c36c0a50dfa98cb32ad /test | |
parent | dc9a3704bfc313991c54ba985e344d3ee88b4168 (diff) | |
download | neon-7dbf6935b36ef6929f44ba277b1b569e780b96c7.tar.gz |
Add support for configuring a SOCKS proxy for the HTTP session:
* src/ne_request.c (open_connection): Fix non-proxy error path.
Establish connection via SOCKS proxy.
* src/ne_session.c (ne_session_socks_proxy): New function.
* src/ne_session.h (ne_session_socks_proxy): New prototype.
* src/ne_private.h (struct ne_session_s): Add socks_ver, socks_user,
socks_password fields.
* test/request.c (socks_session, socks_proxy): New functions.
git-svn-id: http://svn.webdav.org/repos/projects/neon/trunk@1559 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845
Diffstat (limited to 'test')
-rw-r--r-- | test/request.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/request.c b/test/request.c index 247e738..207181e 100644 --- a/test/request.c +++ b/test/request.c @@ -2176,6 +2176,41 @@ static int addrlist(void) return await_server(); } +static int socks_session(ne_session **sess, struct socks_server *srv, + const char *hostname, unsigned int port, + server_fn server, void *userdata) +{ + srv->server = server; + srv->userdata = userdata; + CALL(spawn_server(7777, socks_server, srv)); + *sess = ne_session_create("http", hostname, port); + ne_session_socks_proxy(*sess, srv->version, "localhost", 7777, + srv->username, srv->password); + return OK; +} + +static int socks_proxy(void) +{ + ne_session *sess; + struct socks_server srv = {0}; + + srv.version = NE_SOCK_SOCKSV5; + srv.failure = fail_none; + srv.expect_port = 4242; + srv.expect_addr = NULL; + srv.expect_fqdn = "socks.example.com"; + srv.username = "bloggs"; + srv.password = "guessme"; + + CALL(socks_session(&sess, &srv, srv.expect_fqdn, srv.expect_port, + single_serve_string, EMPTY_RESP)); + + CALL(any_2xx_request(sess, "/blee")); + + ne_session_destroy(sess); + return await_server(); +} + /* TODO: test that ne_set_notifier(, NULL, NULL) DTRT too. */ ne_test tests[] = { @@ -2267,5 +2302,6 @@ ne_test tests[] = { T(local_addr), T(dereg_progress), T(addrlist), + T(socks_proxy), T(NULL) }; |