openssl startup call refactor added by andyjpb on Sun Nov 23 01:58:20 2014

diff -urp v1.6.4/openssl.scm v1.6.4-andyjpb-fix/openssl.scm
--- v1.6.4/openssl.scm  2014-11-23 00:07:52.324097414 +0000
+++ v1.6.4-andyjpb-fix/openssl.scm      2014-11-23 00:57:24.071254788 +0000
@@ -446,7 +446,6 @@ EOF
             (outbuf (and outbufsize (fx> outbufsize 0) ""))
             (output
               (lambda (buffer)
-               (startup)
                (when (> (##sys#size buffer) 0) ; Undefined behaviour for 0 bytes!
                  (let loop ((offset 0) (size (##sys#size buffer)))
                    (let ((ret (ssl-call/timeout
@@ -458,6 +457,7 @@ EOF
         (make-output-port
         ;; write
         (lambda (buffer)
+          (startup)
           (if outbuf
             (begin
               (set! outbuf (string-append outbuf buffer))
@@ -476,7 +476,7 @@ EOF
             (shutdown)))
         ;; flush
         (lambda ()
-          (when outbuf
+          (when (and (startup) outbuf)
             (output outbuf)
             (set! outbuf "")))))))
       (##sys#setslot in 3 "(ssl)")