/* --------------------- */ static int init_tsock(CNID_private *db) { int fd; int len; struct iovec iov[2]; LOG(log_debug, logtype_cnid, "init_tsock: BEGIN. Opening volume '%s', CNID Server: %s/%s", db->db_dir, db->cnidserver, db->cnidport); if ((fd = tsock_getfd(db->cnidserver, db->cnidport)) < 0) return -1; len = strlen(db->db_dir); iov[0].iov_base = &len; iov[0].iov_len = sizeof(int); iov[1].iov_base = db->db_dir; iov[1].iov_len = len; if (write_vec(fd, iov, len + sizeof(int), 2) != len + sizeof(int)) { LOG(log_error, logtype_cnid, "init_tsock: Error/short write: %s", strerror(errno)); close(fd); return -1; } LOG(log_debug, logtype_cnid, "init_tsock: ok"); return fd; }
/* --------------------- */ static int init_tsock(CNID_bdb_private *db) { int fd; int len[DBD_NUM_OPEN_ARGS]; int iovecs; struct iovec iov[DBD_NUM_OPEN_ARGS + 1] = {{0}}; struct vol *vol = db->vol; ssize_t iovlen; LOG(log_debug, logtype_cnid, "connecting to CNID server: %s:%s", vol->v_cnidserver, vol->v_cnidport); if ((fd = tsock_getfd(vol->v_cnidserver, vol->v_cnidport)) < 0) return -1; LOG(log_debug, logtype_cnid, "connecting volume '%s', path: %s, user: %s", vol->v_configname, vol->v_path, vol->v_obj->username[0] ? vol->v_obj->username : "******"); iovecs = 1 + DBD_NUM_OPEN_ARGS - 1; len[0] = strlen(vol->v_configname) + 1; len[1] = strlen(vol->v_path) + 1; len[2] = strlen(vol->v_obj->username); iov[0].iov_base = &len[0]; iov[0].iov_len = DBD_NUM_OPEN_ARGS * sizeof(int); iov[1].iov_base = vol->v_configname; iov[1].iov_len = len[0]; iov[2].iov_base = vol->v_path; iov[2].iov_len = len[1]; if (len[2] > 0) { len[2] += 1; iovecs++; iov[3].iov_base = vol->v_obj->username; iov[3].iov_len = len[2]; } iovlen = iov[0].iov_len + iov[1].iov_len + iov[2].iov_len + iov[3].iov_len; if (write_vec(fd, iov, iovlen, iovecs) != iovlen) { LOG(log_error, logtype_cnid, "init_tsock: Error/short write: %s", strerror(errno)); close(fd); return -1; } LOG(log_debug, logtype_cnid, "init_tsock: ok"); return fd; }