+ if (sp->connect_request_buf)
+ {
+ int r;
+
+ sp->complete = cs_complete_auto_head;
+ if (sp->connect_request_len > 0)
+ {
+ r = tcpip_put(h, sp->connect_request_buf,
+ sp->connect_request_len);
+ TRC(fprintf(stderr, "tcpip_put CONNECT r=%d\n", r));
+ if (r) /* < 0 is error, 1 is in-complete */
+ return r;
+ TRC(fprintf(stderr, "tcpip_put CONNECT complete\n"));
+ TRC(fwrite(sp->connect_request_buf, 1, sp->connect_request_len, stderr));
+ }
+ sp->connect_request_len = 0;
+
+ r = tcpip_get(h, &sp->connect_response_buf, &sp->connect_response_len);
+ TRC(fprintf(stderr, "tcpip_get CONNECT r=%d\n", r));
+ if (r == 1)
+ return r;
+ if (r <= 0)
+ return -1;
+ TRC(fwrite(sp->connect_response_buf, 1, r, stderr));
+ xfree(sp->connect_request_buf);
+ sp->connect_request_buf = 0;
+ sp->complete = cs_complete_auto;
+ }