int Curl_sec_read(struct connectdata *conn, int fd, void *buffer, int length) { size_t len; int rx = 0; if(conn->sec_complete == 0 || conn->data_prot == 0) return read(fd, buffer, length); if(conn->in_buffer.eof_flag){ conn->in_buffer.eof_flag = 0; return 0; } len = buffer_read(&conn->in_buffer, buffer, length); length -= len; rx += len; buffer = (char*)buffer + len; while(length) { if(sec_get_data(conn, fd, &conn->in_buffer) < 0) return -1; if(conn->in_buffer.size == 0) { if(rx) conn->in_buffer.eof_flag = 1; return rx; } len = buffer_read(&conn->in_buffer, buffer, length); length -= len; rx += len; buffer = (char*)buffer + len; } return rx; }
int sec_read(int fd, void *data, int length) { size_t len; int rx = 0; if (ftp->sec_complete == 0 || ftp->data_prot == 0) return read(fd, data, length); if (ftp->in_buffer.eof_flag) { ftp->in_buffer.eof_flag = 0; return 0; } len = buffer_read(&ftp->in_buffer, data, length); length -= len; rx += len; data = (char *)data + len; while (length) { if (sec_get_data(fd, &ftp->in_buffer, ftp->data_prot) < 0) return -1; if (ftp->in_buffer.size == 0) { if (rx) ftp->in_buffer.eof_flag = 1; return rx; } len = buffer_read(&ftp->in_buffer, data, length); length -= len; rx += len; data = (char *)data + len; } return rx; }
int sec_read(int fd, void *dataptr, int length) { size_t len; int rx = 0; if(sec_complete == 0 || data_prot == 0) return read(fd, dataptr, length); if(in_buffer.eof_flag){ in_buffer.eof_flag = 0; return 0; } len = buffer_read(&in_buffer, dataptr, length); length -= len; rx += len; dataptr = (char*)dataptr + len; while(length){ int ret; ret = sec_get_data(fd, &in_buffer, data_prot); if (ret < 0) return -1; if(ret == 0 && in_buffer.size == 0) { if(rx) in_buffer.eof_flag = 1; return rx; } len = buffer_read(&in_buffer, dataptr, length); length -= len; rx += len; dataptr = (char*)dataptr + len; } return rx; }