assistd / go-ios

MIT License
2 stars 0 forks source link

wdb转发后,tidevice reboot卡主 #40

Closed prife closed 1 year ago

prife commented 1 year ago
  1. tidevice reboot,Success,但是设备不重启 2.tidevice developer,必现卡主
mutu1213 commented 1 year ago

relay测试代码(未对conn和client conn进行close):

func tcp_to_unix(tcp, unix string) error {
    if fileInfo, _ := os.Stat(ios.DefaultUsbmuxdSocket); fileInfo != nil {
        bak := fmt.Sprintf("%v.bak", ios.DefaultUsbmuxdSocket)
        err := os.Rename(ios.DefaultUsbmuxdSocket, bak)
        if err != nil {
            return err
        }
    }
    listener, err := net.Listen("unix", unix)
    if err != nil {
        return fmt.Errorf("usbmuxd: fail to listen on: %v, error:%v", unix, err)
    }

    os.Chmod(unix, 0777)
    log.Debugln("listen on: ")
    for {
        conn, err := listener.Accept()
        if err != nil {
            return fmt.Errorf("usbmuxd: fail to listen accept: %v", err)
        }
        log.Infof("get conn:%v", conn.RemoteAddr().String())
        client, err := net.Dial("tcp", tcp)     
        go func() {
            io.Copy(client, conn)
        }()
        go func() {
            io.Copy(conn, client)
        }()
    }
}

现象: tidevice reboot 虽然返回success但是不生效(这个是已知现象),但是只要把relay ctrl+c 杀掉 手机就会立马重启,即使隔1分钟杀relay也是会重启