CopilotC-Nvim / CopilotChat.nvim

Chat with GitHub Copilot in Neovim
https://copilotc-nvim.github.io/CopilotChat.nvim/
GNU General Public License v3.0
1.72k stars 83 forks source link

Proxy setting hangs chat indefinitely #309

Closed mattephi closed 4 months ago

mattephi commented 6 months ago

I am using copilot through my VPS.

Am I using the parameter in the wrong way or it is really bugged if the https:// is specified?

deathbeam commented 6 months ago

Are you sure you are specifing the proxy correctly? Usually proxy urls are just http. And from curl docs if you omit the protocol (e.g http://) it uses http:// by default. So I think you are just using wrong proxy url

EDIT:

For reference from curl manpage (the proxy param is passed straigth here):

       -x, --proxy [protocol://]host[:port]
              Use the specified proxy.

              The  proxy  string can be specified with a protocol:// prefix. No protocol specified or http:// it is treated as an HTTP proxy. Use socks4://, socks4a://, socks5:// or socks5h:// to
              request a specific SOCKS version to be used.

              Unix domain sockets are supported for socks proxy. Set localhost for the host part. e.g. socks5h://localhost/path/to/socket.sock

              HTTPS proxy support works set with the https:// protocol prefix for OpenSSL and GnuTLS (added in 7.52.0). It also works for BearSSL, mbedTLS, rustls, Schannel, Secure Transport  and
              wolfSSL (added in 7.87.0).

              Unrecognized and unsupported proxy protocols cause an error (added in 7.52.0).  Ancient curl versions ignored unknown schemes and used http:// instead.

              If the port number is not specified in the proxy string, it is assumed to be 1080.

              This option overrides existing environment variables that set the proxy to use. If there is an environment variable setting a proxy, you can set proxy to "" to override it.

              All  operations that are performed over an HTTP proxy are transparently converted to HTTP. It means that certain protocol specific operations might not be available. This is not the
              case if you can tunnel through the proxy, as one with the -p, --proxytunnel option.

              User and password that might be provided in the proxy string are URL decoded by curl. This allows you to pass in special characters such as @ by using %40 or pass in  a  colon  with
              %3a.

              The proxy host can be specified the same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password.

              When a proxy is used, the active FTP mode as set with -P, --ftp-port, cannot be used.

              If --proxy is provided several times, the last set value is used.

              Example:
               curl --proxy http://proxy.example https://example.com

              See also --socks5 and --proxy-basic.
deathbeam commented 6 months ago

Also re: hanging indefinitely, this is probably something we should handle as error properly, do you have logs? See :CopilotChatDebugInfo,

mattephi commented 6 months ago

Are you sure you are specifing the proxy correctly? Usually proxy urls are just http. And from curl docs if you omit the protocol (e.g http://) it uses http:// by default. So I think you are just using wrong proxy url

EDIT:

For reference from curl manpage (the proxy param is passed straigth here):

       -x, --proxy [protocol://]host[:port]
              Use the specified proxy.

              The  proxy  string can be specified with a protocol:// prefix. No protocol specified or http:// it is treated as an HTTP proxy. Use socks4://, socks4a://, socks5:// or socks5h:// to
              request a specific SOCKS version to be used.

              Unix domain sockets are supported for socks proxy. Set localhost for the host part. e.g. socks5h://localhost/path/to/socket.sock

              HTTPS proxy support works set with the https:// protocol prefix for OpenSSL and GnuTLS (added in 7.52.0). It also works for BearSSL, mbedTLS, rustls, Schannel, Secure Transport  and
              wolfSSL (added in 7.87.0).

              Unrecognized and unsupported proxy protocols cause an error (added in 7.52.0).  Ancient curl versions ignored unknown schemes and used http:// instead.

              If the port number is not specified in the proxy string, it is assumed to be 1080.

              This option overrides existing environment variables that set the proxy to use. If there is an environment variable setting a proxy, you can set proxy to "" to override it.

              All  operations that are performed over an HTTP proxy are transparently converted to HTTP. It means that certain protocol specific operations might not be available. This is not the
              case if you can tunnel through the proxy, as one with the -p, --proxytunnel option.

              User and password that might be provided in the proxy string are URL decoded by curl. This allows you to pass in special characters such as @ by using %40 or pass in  a  colon  with
              %3a.

              The proxy host can be specified the same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password.

              When a proxy is used, the active FTP mode as set with -P, --ftp-port, cannot be used.

              If --proxy is provided several times, the last set value is used.

              Example:
               curl --proxy http://proxy.example https://example.com

              See also --socks5 and --proxy-basic.

Does not the manpage you provided say that https:// is a valid proxy protocol? Moreover, I use https:// with curl itself and it works fine I have unintentionally lied, it hangs, probably copilot.vim just ignores the protocol I specified.

mattephi commented 6 months ago

Also re: hanging indefinitely, this is probably something we should handle as error properly, do you have logs? See :CopilotChatDebugInfo, does not provide anything useful or I just do not know how to use it properly:

If you are facing issues, run `:checkhealth CopilotChat` and share the output.

Log file path:
`/Users/m8dotpie/.local/state/nvim/CopilotChat.nvim.log`

Current buffer outline:
`/Users/m8dotpie/.config/nvim/copilot-chat`
```copilot-chat
## User ---

alive?

## Copilot ---