+ break;
+ case PROTO_CONNECT:
+ {
+ int foundit = 0;
+ BIO *fbio = BIO_new(BIO_f_buffer());
+
+ BIO_push(fbio, sbio);
+ BIO_printf(fbio, "CONNECT %s\r\n\r\n", connectstr);
+ (void)BIO_flush(fbio);
+ /* wait for multi-line response to end CONNECT response */
+ do {
+ mbuf_len = BIO_gets(fbio, mbuf, BUFSIZZ);
+ if (strstr(mbuf, "200") != NULL
+ && strstr(mbuf, "established") != NULL)
+ foundit++;
+ } while (mbuf_len > 3 && foundit == 0);
+ (void)BIO_flush(fbio);
+ BIO_pop(fbio);
+ BIO_free(fbio);
+ if (!foundit) {
+ BIO_printf(bio_err, "%s: HTTP CONNECT failed\n", prog);
+ goto shut;
+ }
+ }
+ break;