SamKirkland / ftp-deploy

Deploy websites over FTP with one command line
MIT License
89 stars 43 forks source link

ECONNRESET: Connection is closed on empty server-dir #37

Open JanST123 opened 9 months ago

JanST123 commented 9 months ago

Hi, I am basically using the github action.

I noticed that, wenn the remote directory is empty, the FTP connection is closed by QUIT.

Reproduction:

If you found this project helpful, please support it
by giving it a ⭐ on Github --> https://github.com/SamKirkland/FTP-Deploy-Action
or add a badge 🏷️ to your projects readme --> https://github.com/SamKirkland/FTP-Deploy-Action#badge
Using the following excludes filters: ["**/.git*","**/.git*/**","**/node_modules/**"]
Creating local state at ./htdocs/.ftp-deploy-sync-state.json
Local state created
Connected to 202.x.x.x:21 (No encryption)
< 220 ProFTPD Server (ProFTPD) [202.x.x.x]

> AUTH TLS
< 234 AUTH TLS successful

Control socket is using: TLSv1.3
Login security: TLSv1.3
> USER xxx
< 331 Password required for xxx

> PASS ###
< 230 User xxx logged in

> FEAT
< 211-Features:

...

> TYPE I
< 200 Type set to I

> STRU F
< 200 Structure set to F

> OPTS UTF8 ON
< 200 UTF8 set to on

> OPTS MLST type;size;modify;unique;unix.mode;unix.owner;unix.group;unix.ownername;unix.groupname;
< 200 MLST OPTS type;size;modify;unique;UNIX.mode;UNIX.owner;UNIX.group;UNIX.ownername;UNIX.groupname;

> PBSZ 0
< 200 PBSZ 0 successful

> PROT P
< 200 Protection set to Private

  changing dir to ./httpdocs/
> MKD .
< 550 .: File exists

> CWD .
< 250 CWD command successful

> MKD httpdocs
< 550 httpdocs: File exists

> CWD httpdocs
< 250 CWD command successful

  dir changed
Trying to find optimal transfer strategy...
> EPSV
< 229 Entering Extended Passive Mode (|||64293|)

Optimal transfer strategy found.
> RETR .ftp-deploy-sync-state.json
> QUIT
----------------------------------------------------------------
No file exists on the server "./httpdocs/.ftp-deploy-sync-state.json" - this must be your first publish! πŸŽ‰
The first publish will take a while... but once the initial sync is done only differences are published!
If you get this message and its NOT your first publish, something is wrong.
----------------------------------------------------------------
Local Files:    1,175
Server Files:   0
----------------------------------------------------------------
Calculating differences between client & server
----------------------------------------------------------------
πŸ“ Create: admin
....
----------------------------------------------------------------
Making changes to 1175 files/folders to sync server state
Uploading: 20.9 MB -- Deleting: 0 B -- Replacing: 0 B
----------------------------------------------------------------
creating folder "admin/"
  changing dir to admin

----------------------------------------------------------------
--------------  πŸ”₯πŸ”₯πŸ”₯ an error occurred  πŸ”₯πŸ”₯πŸ”₯  --------------
----------------------------------------------------------------

----------------------------------------------------------------
----------------------  full error below  ----------------------
----------------------------------------------------------------

Error: Client is closed because read ECONNRESET (data socket)
    at /home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/v4.3.4/dist/index.js:5197:29
    at new Promise (<anonymous>)
    at FTPContext.handle (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/v4.3.4/dist/index.js:5179:16)
    at Client.sendIgnoringError (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/v4.3.4/dist/index.js:4226:25)
    at Client._openDir (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/v4.3.4/dist/index.js:[47](https://github.com/xx#step:3:48)44:20)
    at Client.ensureDir (/home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/v4.3.4/dist/index.js:4735:24)
    at /home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/v4.3.4/dist/index.js:3555:126
    at Generator.next (<anonymous>)
    at /home/runner/work/_actions/SamKirkland/FTP-Deploy-Action/v4.3.4/dist/index.js:3[54](https://github.com/xx)0:[71](https://github.com/xxx)
    at new Promise (<anonymous>)
Closing reason: Error: read ECONNRESET
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:[217](https://github.com/xxx):20) {
  code: 'ECONNRESET'
}

The workaround would be to just put any file to the remote dir