A typo and a couple of logic errors fixed. I think there may still be one
authorGeoff Thorpe <geoff@openssl.org>
Tue, 28 Nov 2000 19:09:58 +0000 (19:09 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Tue, 28 Nov 2000 19:09:58 +0000 (19:09 +0000)
or two kinks lurking around, but it now appears to deal with the basic
test cases ok.

demos/tunala/.cvsignore [new file with mode: 0644]
demos/tunala/sm.c
demos/tunala/tunala.c

diff --git a/demos/tunala/.cvsignore b/demos/tunala/.cvsignore
new file mode 100644 (file)
index 0000000..1254a1e
--- /dev/null
@@ -0,0 +1,2 @@
+tunala
+
index 05bd7b94594241e7af29f78b804580c8b5e2cde6..ee661c5197679483697fbdc853ad2796656a36b7 100644 (file)
@@ -119,7 +119,8 @@ int state_machine_close_clean(state_machine_t *machine)
        buffer_close(&machine->clean_in);
        buffer_close(&machine->clean_out);
        /* And start an SSL shutdown */
        buffer_close(&machine->clean_in);
        buffer_close(&machine->clean_out);
        /* And start an SSL shutdown */
-       SSL_shutdown(machine->ssl);
+       if(machine->ssl)
+               SSL_shutdown(machine->ssl);
        /* This is an "event", so flush the SSL of any generated traffic */
        state_machine_churn(machine);
        if(buffer_empty(&machine->dirty_in) &&
        /* This is an "event", so flush the SSL of any generated traffic */
        state_machine_churn(machine);
        if(buffer_empty(&machine->dirty_in) &&
index b54bb422dbbf90523227b4cc1b971ddabc73dcb4..cc32adc0500503ea31bfbf2dd6910bccd6fac262 100644 (file)
@@ -295,7 +295,7 @@ main_loop:
                fprintf(stderr, "selector_select returned a badness error.\n");
                abort();
        case 0:
                fprintf(stderr, "selector_select returned a badness error.\n");
                abort();
        case 0:
-               fprintf(stderr, "Warn, selector_select return 0 - signal??\n");
+               fprintf(stderr, "Warn, selector_select returned 0 - signal??\n");
                goto main_loop;
        default:
                break;
                goto main_loop;
        default:
                break;
@@ -678,7 +678,7 @@ static int tunala_item_io(tunala_selector_t *selector, tunala_item_t *item)
                        item->clean_send = -1;
                item->clean_read = -1;
        }
                        item->clean_send = -1;
                item->clean_read = -1;
        }
-       if(c_s) {
+       if(c_s && (item->clean_send != -1)) {
                close(item->clean_send);
                if(item->clean_send == item->clean_read)
                        item->clean_read = -1;
                close(item->clean_send);
                if(item->clean_send == item->clean_read)
                        item->clean_read = -1;
@@ -690,7 +690,7 @@ static int tunala_item_io(tunala_selector_t *selector, tunala_item_t *item)
                        item->dirty_send = -1;
                item->dirty_read = -1;
        }
                        item->dirty_send = -1;
                item->dirty_read = -1;
        }
-       if(d_s) {
+       if(d_s && (item->dirty_send != -1)) {
                close(item->dirty_send);
                if(item->dirty_send == item->dirty_read)
                        item->dirty_read = -1;
                close(item->dirty_send);
                if(item->dirty_send == item->dirty_read)
                        item->dirty_read = -1;