--- sio_test.c 2002/11/19 22:30:07 1.4
+++ sio_test.c 2002/11/24 19:36:48 1.5
@@ -11,6 +11,9 @@
extern sio_module_t sio_module_bio;
extern sio_module_t sio_module_hello;
extern sio_module_t sio_module_buffer;
+#ifndef SINK
+extern sio_module_t sio_module_sa;
+#endif
#define e(f) rc = f; printf("%s = %s\n",#f, sio_error(rc)); fflush(stdout);
#define s(f) src = f; printf("%s = %s\n",#f, sa_error(src)); fflush(stdout);
@@ -23,6 +26,9 @@
void *rp;
sio_rc_t rc;
sio_t *sio;
+#ifndef SINK
+ sio_stage_t *sios_sa;
+#endif
sio_stage_t *sios_bio, *sios_hello, *sios_buffer;
sa_rc_t src;
@@ -32,12 +38,17 @@
int fd;
SSL_CTX *ctx;
- BIO *bio, *sbio;
+#ifdef SINK
+ BIO *bio;
+#endif
+ BIO *sbio;
char buf[] = "Hello world\n";
size_t actual;
size_t buflen;
+ int no = 0;
+ int yes = 1;
s(sa_create(&msa));
s(sa_option(msa, SA_OPTION_REUSEADDR, 1));
@@ -49,16 +60,22 @@
s(sa_addr_destroy(saa));
uri = NULL;
+ ERR_load_BIO_strings();
OpenSSL_add_ssl_algorithms();
ctx = SSL_CTX_new(SSLv23_server_method());
- SSL_CTX_use_certificate_file(ctx, "/u/mlelstv/ssl/server.crt", SSL_FILETYPE_PEM);
- SSL_CTX_use_PrivateKey_file(ctx, "/u/mlelstv/ssl/server.key", SSL_FILETYPE_PEM);
+ if (!SSL_CTX_use_certificate_file(ctx, "/u/mlelstv/ssl/server.crt", SSL_FILETYPE_PEM))
+ exit(98);
+ if (!SSL_CTX_use_PrivateKey_file(ctx, "/u/mlelstv/ssl/server.key", SSL_FILETYPE_PEM))
+ exit(99);
e(sio_create(&sio));
- e(sio_create_stage(sio, &sio_module_bio, &sios_bio));
- e(sio_create_stage(sio, &sio_module_hello, &sios_hello));
+ e(sio_create_stage(sio, &sio_module_bio, &sios_bio));
+ e(sio_create_stage(sio, &sio_module_hello, &sios_hello));
e(sio_create_stage(sio, &sio_module_buffer, &sios_buffer));
+#ifndef SINK
+ e(sio_create_stage(sio, &sio_module_sa, &sios_sa));
+#endif
buflen = 256;
e(sio_configure_stage(sio, sios_bio, "inputsize", &buflen));
@@ -75,33 +92,54 @@
printf("Connection from %s\n",uri);
s(sa_addr_destroy(saa));
+ p(sbio = BIO_new_ssl(ctx,0));
+ e(sio_configure_stage(sio, sios_bio, "bio", sbio));
+
+#ifdef SINK
s(sa_getfd(sa, &fd));
p(bio = BIO_new_socket(fd, 0));
-
- p(sbio = BIO_new_ssl(ctx,0));
p(BIO_push(sbio,bio));
+#else
+ e(sio_configure_stage(sio, sios_sa, "sa", sa));
+ buflen = 256;
+ e(sio_configure_stage(sio, sios_sa, "buflen", &buflen));
+ e(sio_configure_stage(sio, sios_bio, "issink", &no));
+#endif
+ e(sio_configure_stage(sio, sios_bio, "freebio", &yes));
- e(sio_configure_stage(sio, sios_bio, "bio", sbio));
- e(sio_attach(sio, sios_buffer, SIO_MODE_WRITE));
- e(sio_attach(sio, sios_hello, SIO_MODE_READWRITE));
+#ifndef SINK
+ e(sio_attach(sio, sios_sa, SIO_MODE_READWRITE));
+#endif
e(sio_attach(sio, sios_bio, SIO_MODE_READWRITE));
+ e(sio_attach(sio, sios_hello, SIO_MODE_READWRITE));
+ e(sio_attach(sio, sios_buffer, SIO_MODE_WRITE));
e(sio_write(sio, buf, sizeof(buf)-1, &actual));
e(sio_push(sio));
- e(sio_detach(sio, sios_bio));
- e(sio_detach(sio, sios_hello));
e(sio_detach(sio, sios_buffer));
+ e(sio_detach(sio, sios_hello));
+ e(sio_detach(sio, sios_bio));
+#ifndef SINK
+ e(sio_detach(sio, sios_sa));
+#endif
+#ifdef SINK
BIO_pop(bio);
- BIO_free(sbio);
+#endif
+ /* BIO_free(sbio); */
+#ifdef SINK
BIO_free(bio);
+#endif
sa_destroy(sa);
}
+#ifndef SINK
+ e(sio_destroy_stage(sio, sios_sa));
+#endif
e(sio_destroy_stage(sio, sios_buffer));
e(sio_destroy_stage(sio, sios_hello));
e(sio_destroy_stage(sio, sios_bio));
|