diff options
-rw-r--r-- | src/ne_request.c | 1 | ||||
-rw-r--r-- | test/request.c | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/ne_request.c b/src/ne_request.c index ea43f3a..ae075c2 100644 --- a/src/ne_request.c +++ b/src/ne_request.c @@ -1624,6 +1624,7 @@ static int open_connection(ne_session *sess) sess->nexthop->port, ne_sock_error(sess->socket)); ne_close_connection(sess); + ret = NE_ERROR; } } } diff --git a/test/request.c b/test/request.c index 0cb4c8b..ad1a62a 100644 --- a/test/request.c +++ b/test/request.c @@ -2296,6 +2296,39 @@ static int send_length(void) return await_server(); } +/* Test for error code for a SOCKS proxy failure, bug in <= 0.29.3. */ +static int socks_fail(void) +{ + ne_session *sess; + struct socks_server srv = {0}; + int ret; + + srv.version = NE_SOCK_SOCKSV5; + srv.failure = fail_init_vers; + srv.expect_port = 4242; + srv.expect_addr = ne_iaddr_parse("127.0.0.1", ne_iaddr_ipv4); + srv.expect_fqdn = "localhost"; + srv.username = "bloggs"; + srv.password = "guessme"; + + CALL(socks_session(&sess, &srv, srv.expect_fqdn, srv.expect_port, + single_serve_string, EMPTY_RESP)); + + ret = any_request(sess, "/blee"); + ONV(ret != NE_ERROR, + ("request failed with %d not NE_ERROR", ret)); + ONV(strstr(ne_get_error(sess), + "Could not establish connection from SOCKS proxy") == NULL + || strstr(ne_get_error(sess), + "Invalid version in proxy response") == NULL, + ("unexpected error string: %s", ne_get_error(sess))); + + ne_iaddr_free(srv.expect_addr); + + ne_session_destroy(sess); + return await_server(); +} + /* TODO: test that ne_set_notifier(, NULL, NULL) DTRT too. */ ne_test tests[] = { @@ -2388,5 +2421,6 @@ ne_test tests[] = { T(socks_proxy), T(socks_v4_proxy), T(send_length), + T(socks_fail), T(NULL) }; |