BigPizzaV3/CodexPlusPlus · error · anyhow::Error

不是 Codex++ 会话导入链接

Error message

不是 Codex++ 会话导入链接

What it means

Thrown by save_pending_session_share_from_protocol_url when a codexpp://-style protocol URL does not carry the marker that identifies a Codex++ session import link. The URL parsed successfully but is some other protocol payload; the offending input is the protocol URL's identifying fields, and the handler refuses to treat foreign links as session shares.

Source

Thrown at crates/codex-plus-core/src/session_share.rs:18

use aes_gcm::{Aes256Gcm, KeyInit, Nonce, aead::Aead};
use anyhow::{Context, bail};
use base64::Engine;
use rusqlite::Connection;
use serde_json::{Value, json};
use std::fs::{self, OpenOptions};
use std::io::Write;
use std::path::{Path, PathBuf};
use std::time::{SystemTime, UNIX_EPOCH};
use uuid::Uuid;

const MAX_ROLLOUT_BYTES: usize = 16 * 1024 * 1024;
const SHARE_HOSTS: &[&str] = &["share.codexpp.cc", "codexpp-share.pages.dev"];

pub fn save_pending_session_share_from_protocol_url(url: &str) -> anyhow::Result<String> {
    let parsed = reqwest::Url::parse(url).context("会话导入链接格式无效")?;
    if parsed.scheme() != "codexplusplus" || parsed.host_str() != Some("session") {
        bail!("不是 Codex++ 会话导入链接");
    }
    let share_url = parsed
        .query_pairs()
        .find(|(key, _)| key == "url")
        .map(|(_, value)| value.into_owned())
        .context("会话导入链接缺少分享 URL")?;
    validate_share_url(&share_url)?;
    let path = crate::paths::default_pending_session_share_path();
    if let Some(parent) = path.parent() {
        fs::create_dir_all(parent)?;
    }
    fs::write(&path, format!("{share_url}\n"))?;
    Ok(share_url)
}

pub fn load_pending_session_share() -> anyhow::Result<Option<String>> {
    let path = crate::paths::default_pending_session_share_path();
    if !path.exists() {

View on GitHub (pinned to f2074595a2)

Solutions

  1. 使用 Codex++ 生成的导入协议链接
  2. 检查链接是否被截断或改写
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/codex-plus-core/src/session_share.rs:18 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23). Data as JSON: /api/errors/f828d7398401168a. Report an issue: GitHub.