Lines Matching defs:conn
97 fetch_writev(struct fetch_connect *conn, struct iovec *iov, int iovcnt)
101 int fd = conn->sd;
132 if (conn->ssl != NULL)
133 len = SSL_write(conn->ssl, iov->iov_base, (int)iov->iov_len);
163 fetch_write(const void *str, size_t len, struct fetch_connect *conn)
169 return fetch_writev(conn, iov, 1);
176 fetch_printf(struct fetch_connect *conn, const char *fmt, ...)
192 r = fetch_write(msg, len, conn);
198 fetch_fileno(struct fetch_connect *conn)
201 return conn->sd;
205 fetch_error(struct fetch_connect *conn)
208 return conn->iserr;
212 fetch_clearerr(struct fetch_connect *conn)
215 conn->iserr = 0;
219 fetch_flush(struct fetch_connect *conn)
222 if (conn->issock) {
223 int fd = conn->sd;
239 struct fetch_connect *conn;
246 if ((conn = calloc(1, sizeof(*conn))) == NULL) {
251 conn->sd = fd;
252 conn->issock = 0;
253 return conn;
260 struct fetch_connect *conn;
265 if ((conn = calloc(1, sizeof(*conn))) == NULL)
268 conn->sd = sd;
269 conn->issock = 1;
277 return conn;
281 fetch_close(struct fetch_connect *conn)
283 if (conn == NULL)
286 fetch_flush(conn);
288 SSL_free(conn->ssl);
290 close(conn->sd);
291 free(conn->cache.buf);
292 free(conn->buf);
293 free(conn);
341 fetch_cache_data(struct fetch_connect *conn, char *src, size_t nbytes)
344 if (conn->cache.size < nbytes) {
345 char *tmp = realloc(conn->cache.buf, nbytes);
349 conn->cache.buf = tmp;
350 conn->cache.size = nbytes;
353 memcpy(conn->cache.buf, src, nbytes);
354 conn->cache.len = nbytes;
355 conn->cache.pos = 0;
360 fetch_wait(struct fetch_connect *conn, ssize_t rlen, struct timeval *timeout)
363 int fd = conn->sd;
396 conn->iserr = ETIMEDOUT;
400 conn->iserr = errno;
407 fetch_read(void *ptr, size_t size, size_t nmemb, struct fetch_connect *conn)
423 if (conn->cache.len > 0) {
430 total = (conn->cache.len < len) ? conn->cache.len : len;
431 memcpy(buf, conn->cache.buf, total);
433 conn->cache.len -= total;
434 conn->cache.pos += total;
461 if (conn->ssl != NULL)
462 rlen = fetch_ssl_read(conn->ssl, buf, len);
465 rlen = fetch_nonssl_read(conn->sd, buf, len);
468 conn->iseof = 1;
471 conn->iserr = errno;
473 fetch_cache_data(conn, start, total);
477 if (fetch_wait(conn, rlen, &timeout) == -1)
496 fetch_getln(char *str, int size, struct fetch_connect *conn)
502 if (conn->buf == NULL) {
503 if ((conn->buf = malloc(MIN_BUF_SIZE)) == NULL) {
505 conn->iserr = 1;
508 conn->bufsize = MIN_BUF_SIZE;
511 if (conn->iserr || conn->iseof)
514 if (conn->buflen - conn->bufpos > 0)
517 conn->buf[0] = '\0';
518 conn->bufpos = 0;
519 conn->buflen = 0;
521 len = fetch_read(&c, sizeof(c), 1, conn);
523 if (conn->iserr)
525 if (conn->iseof)
529 conn->buf[conn->buflen++] = c;
530 if (conn->buflen == conn->bufsize) {
531 char *tmp = conn->buf;
532 tmpsize = conn->bufsize * 2 + 1;
535 conn->iserr = 1;
538 conn->buf = tmp;
539 conn->bufsize = tmpsize;
543 if (conn->buflen == 0)
546 tmpsize = MIN(size - 1, (int)(conn->buflen - conn->bufpos));
547 memcpy(str, conn->buf + conn->bufpos, tmpsize);
549 conn->bufpos += tmpsize;
554 fetch_getline(struct fetch_connect *conn, char *buf, size_t buflen,
560 if (fetch_getln(buf, (int)buflen, conn) == NULL) {
561 if (conn->iseof) { /* EOF */
570 fetch_clearerr(conn);
579 size_t rlen = fetch_read(&c, sizeof(c), 1, conn);
585 fetch_clearerr(conn);
745 fetch_set_ssl(struct fetch_connect *conn, void *ssl)
748 conn->ssl = ssl;