OSSP CVS Repository

ossp - Difference in ossp-pkg/sio/sio_test.c versions 1.4 and 1.5
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/sio/sio_test.c 1.4 -> 1.5

--- 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));

CVSTrac 2.0.1