diff options
author | Joe Orton <notroj@users.noreply.github.com> | 2009-08-18 14:53:47 +0000 |
---|---|---|
committer | Joe Orton <notroj@users.noreply.github.com> | 2009-08-18 14:53:47 +0000 |
commit | 7a442e2f3fcf145a504431dee8895225b787e520 (patch) | |
tree | d25fc8b287467c2fc9f3e74fbc984a7427a01fce /test/socket.c | |
parent | 4bd99af3f2e0afa48e03448d06f4c92a1e3d74e5 (diff) | |
download | neon-git-7a442e2f3fcf145a504431dee8895225b787e520.tar.gz |
Tag release 0.28.6.0.28.6
Diffstat (limited to 'test/socket.c')
-rw-r--r-- | test/socket.c | 202 |
1 files changed, 8 insertions, 194 deletions
diff --git a/test/socket.c b/test/socket.c index 54f969a..b2a681e 100644 --- a/test/socket.c +++ b/test/socket.c @@ -226,7 +226,6 @@ static int addr_make_v4(void) { ne_inet_addr *ia; char pr[50]; - unsigned char raw[5]; ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127); ONN("ne_iaddr_make returned NULL", ia == NULL); @@ -236,11 +235,6 @@ static int addr_make_v4(void) ONN("bogus ne_iaddr_typeof return", ne_iaddr_typeof(ia) != ne_iaddr_ipv4); - raw[4] = 'Z'; - ONN("ne_iaddr_raw gave bad retval", ne_iaddr_raw(ia, raw) != raw); - ONN("raw address mismatch", memcmp(raw, raw_127, 4) != 0); - ONN("ne_iaddr_raw buffer overflow", raw[4] != 'Z'); - ne_iaddr_free(ia); return OK; } @@ -262,7 +256,6 @@ static int addr_make_v6(void) for (n = 0; as[n].rep != NULL; n++) { ne_inet_addr *ia = ne_iaddr_make(ne_iaddr_ipv6, as[n].addr); char pr[128]; - unsigned char raw[17]; ONV(ia == NULL, ("could not make address for '%s'", as[n].rep)); @@ -273,11 +266,6 @@ static int addr_make_v6(void) ONN("bogus ne_iaddr_typeof return", ne_iaddr_typeof(ia) != ne_iaddr_ipv6); - raw[16] = 'Z'; - ONN("ne_iaddr_raw gave bad retval", ne_iaddr_raw(ia, raw) != raw); - ONN("raw address mismatch", memcmp(raw, as[n].addr, 4) != 0); - ONN("ne_iaddr_raw buffer overflow", raw[16] != 'Z'); - ne_iaddr_free(ia); } @@ -843,6 +831,14 @@ static int serve_expect(ne_socket *sock, void *ud) return OK; } +static int full_write(ne_socket *sock, const char *data, size_t len) +{ + int ret = ne_sock_fullwrite(sock, data, len); + NE_DEBUG(NE_DBG_SOCKET, "wrote: [%.*s]\n", (int)len, data); + ONV(ret, ("write failed (%d): %s", ret, ne_sock_error(sock))); + return OK; +} + #define WRITEL(str) CALL(full_write(sock, str, strlen(str))); \ minisleep() @@ -878,43 +874,6 @@ static int large_writes(void) return finish(sock, 1); } -static int full_writev(ne_socket *sock, struct ne_iovec *vec, int count) -{ - int ret = ne_sock_fullwritev(sock, vec, count); - NE_DEBUG(NE_DBG_SOCKET, "wrote vector (%d)\n", count); - ONV(ret, ("writev failed (%d): %s", ret, ne_sock_error(sock))); - return OK; -} - -#undef LARGE_SIZE -#define LARGE_SIZE (123456 * 4) - -static int large_writev(void) -{ - struct string str; - ne_socket *sock; - ssize_t n; - struct ne_iovec vec[4]; - - str.data = ne_malloc(LARGE_SIZE); - str.len = LARGE_SIZE; - - for (n = 0; n < LARGE_SIZE; n++) - str.data[n] = 41 + n % 130; - - for (n = 0; n < 4; n++) { - vec[n].base = str.data + n * LARGE_SIZE / 4; - vec[n].len = LARGE_SIZE / 4; - } - - CALL(begin(&sock, serve_expect, &str)); - CALL(full_writev(sock, vec, 4)); - - ne_free(str.data); - return finish(sock, 1); -} - - /* echoes back lines. */ static int echo_server(ne_socket *sock, void *ud) { @@ -1243,147 +1202,6 @@ static int cipher(void) return finish(sock, 1); } -static int error(void) -{ - ne_socket *sock = ne_sock_create(); - - ne_sock_set_error(sock, "%s:%s", "fish", "42"); - - ONCMP("fish:42", ne_sock_error(sock), "socket error", "set"); - - ne_sock_close(sock); - return OK; -} - -static int begin_socks(ne_socket **sock, struct socks_server *srv, - server_fn server, void *userdata) -{ - srv->server = server; - srv->userdata = userdata; - srv->say_hello = 1; - CALL(spawn_server(7777, socks_server, srv)); - return do_connect(sock, localhost, 7777); -} - -static int socks_proxy(void) -{ - static const struct { - enum ne_sock_sversion version; - int addr; - const char *fqdn; - unsigned int port; - const char *username, *password; - } ts[] = { - { NE_SOCK_SOCKSV4, 4, NULL, 55555, NULL, NULL }, - { NE_SOCK_SOCKSV4, 4, NULL, 55555, "foobar", NULL }, - { NE_SOCK_SOCKSV4A, 0, "www.example.com", 55555, NULL, NULL }, - { NE_SOCK_SOCKSV5, 0, "www.example.com", 55555, NULL, NULL }, - { NE_SOCK_SOCKSV5, 4, NULL, 55555, NULL, NULL }, - { NE_SOCK_SOCKSV5, 6, NULL, 55555, NULL, NULL }, - { NE_SOCK_SOCKSV5, 0, "www.example.com", 55555, "norman", "foobar" } - }; - unsigned n; - - for (n = 0; n < sizeof(ts)/sizeof(ts[n]); n++) { - ne_socket *sock; - struct socks_server arg = {0}; - int ret; - - arg.version = ts[n].version; - arg.expect_port = ts[n].port; - if (ts[n].addr == 4) - arg.expect_addr = ne_iaddr_make(ne_iaddr_ipv4, raw_127); - else if (ts[n].addr == 6) - arg.expect_addr = ne_iaddr_make(ne_iaddr_ipv4, raw6_cafe); - else - arg.expect_fqdn = ts[n].fqdn; - arg.username = ts[n].username; - arg.password = ts[n].password; - - CALL(begin_socks(&sock, &arg, echo_server, NULL)); - - ret = ne_sock_proxy(sock, ts[n].version, arg.expect_addr, - ts[n].fqdn, ts[n].port, - ts[n].username, ts[n].password); - ONV(ret, ("proxy connect #%u gave %d", n, ret)); - FULLREAD("ok!\n"); - ECHO("hello,\n"); - ECHO("\n"); - ECHO("world\n"); - - if (ts[n].addr) - ne_iaddr_free(arg.expect_addr); - - CALL(finish(sock, 0)); - } - - return OK; -} - -static int fail_socks(void) -{ - static const struct { - enum ne_sock_sversion version; - enum socks_failure failure; - const char *expect; - const char *username, *password; - } ts[] = { - { NE_SOCK_SOCKSV5, fail_init_vers, - "Invalid version in proxy response", NULL, NULL }, - { NE_SOCK_SOCKSV5, fail_init_trunc, - "Could not read initial response from proxy: Connection closed", - NULL, NULL }, - { NE_SOCK_SOCKSV5, fail_init_close, - "Could not read initial response from proxy: Connection closed", - NULL, NULL }, - { NE_SOCK_SOCKSV5, fail_no_auth, - "No acceptable authentication method", - NULL, NULL }, - { NE_SOCK_SOCKSV5, fail_bogus_auth, - "Unexpected authentication method chosen", - NULL, NULL }, - { NE_SOCK_SOCKSV5, fail_auth_close, - "Could not read login reply: Connection closed", - "foo", "bar" }, - { NE_SOCK_SOCKSV5, fail_auth_denied, - "Authentication failed", "foo", "bar" } - }; - unsigned n; - - for (n = 0; n < sizeof(ts)/sizeof(ts[n]); n++) { - ne_socket *sock; - struct socks_server arg = {0}; - int ret; - - arg.version = ts[n].version; - arg.failure = ts[n].failure; - arg.expect_port = 5555; - arg.expect_addr = ne_iaddr_make(ne_iaddr_ipv4, raw_127); - arg.username = ts[n].username; - arg.password = ts[n].password; - - CALL(begin_socks(&sock, &arg, echo_server, NULL)); - - ret = ne_sock_proxy(sock, ts[n].version, arg.expect_addr, - NULL, arg.expect_port, - ts[n].username, ts[n].password); - ONV(ret == 0, - ("proxy connect #%u succeeded, expected failure '%s'", n, - ts[n].expect)); - - if (ret != 0 && strstr(ne_sock_error(sock), ts[n].expect) == NULL) { - t_warning("proxy connect #%u got unexpected failure '%s', wanted '%s'", - n, ne_sock_error(sock), ts[n].expect); - } - - ne_iaddr_free(arg.expect_addr); - - CALL(finish(sock, 0)); - } - - return OK; -} - ne_test tests[] = { T(multi_init), T_LEAKY(resolve), @@ -1417,11 +1235,9 @@ ne_test tests[] = { T(line_long_chunked), T(small_writes), T(large_writes), - T(large_writev), T(echo_lines), T(blocking), T(prebind), - T(error), #ifdef SOCKET_SSL T(ssl_closure), T(ssl_truncate), @@ -1437,7 +1253,5 @@ ne_test tests[] = { T(readline_timeout), T(fullread_timeout), T(block_timeout), - T(socks_proxy), - T(fail_socks), T(NULL) }; |