Skip to content
Snippets Groups Projects
Commit 1d2b2d27 authored by rswindell's avatar rswindell
Browse files

Added 'uptime' member to JS System object.

Eliminated exception in send_thread() when shut-down during transfer
by no-longer dereferencing ctrl_thread pointer if shut-down in progress.
parent 6202dc0a
No related branches found
No related tags found
No related merge requests found
...@@ -98,6 +98,7 @@ static SOCKET server_socket=INVALID_SOCKET; ...@@ -98,6 +98,7 @@ static SOCKET server_socket=INVALID_SOCKET;
static DWORD active_clients=0; static DWORD active_clients=0;
static DWORD sockets=0; static DWORD sockets=0;
static HANDLE socket_mutex=NULL; static HANDLE socket_mutex=NULL;
static time_t uptime;
#ifdef _DEBUG #ifdef _DEBUG
static BYTE socket_debug[20000]={0}; static BYTE socket_debug[20000]={0};
...@@ -498,7 +499,7 @@ JSContext* js_initcx(SOCKET sock, JSObject** glob, JSObject** ftp) ...@@ -498,7 +499,7 @@ JSContext* js_initcx(SOCKET sock, JSObject** glob, JSObject** ftp)
break; break;
lprintf("%04d JavaScript: Initializing System object",sock); lprintf("%04d JavaScript: Initializing System object",sock);
if(js_CreateSystemObject(js_cx, js_glob, &scfg)==NULL) if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime)==NULL)
break; break;
if((*ftp=JS_DefineObject(js_cx, js_glob, "ftp", &js_ftp_class if((*ftp=JS_DefineObject(js_cx, js_glob, "ftp", &js_ftp_class
...@@ -1497,7 +1498,8 @@ static void send_thread(void* arg) ...@@ -1497,7 +1498,8 @@ static void send_thread(void* arg)
} }
fclose(fp); fclose(fp);
*xfer.inprogress=FALSE; if(server_socket!=INVALID_SOCKET)
*xfer.inprogress=FALSE;
if(xfer.tmpfile) { if(xfer.tmpfile) {
if(!(startup->options&FTP_OPT_KEEP_TEMP_FILES)) if(!(startup->options&FTP_OPT_KEEP_TEMP_FILES))
remove(xfer.filename); remove(xfer.filename);
...@@ -1616,7 +1618,8 @@ static void receive_thread(void* arg) ...@@ -1616,7 +1618,8 @@ static void receive_thread(void* arg)
mswait(1); mswait(1);
} }
*xfer.inprogress=FALSE; if(server_socket!=INVALID_SOCKET)
*xfer.inprogress=FALSE;
fclose(fp); fclose(fp);
ftp_close_socket(xfer.data_sock,__LINE__); ftp_close_socket(xfer.data_sock,__LINE__);
...@@ -4083,9 +4086,11 @@ static void ctrl_thread(void* arg) ...@@ -4083,9 +4086,11 @@ static void ctrl_thread(void* arg)
if(transfer_inprogress==TRUE) { if(transfer_inprogress==TRUE) {
lprintf("%04d Waiting for transfer to complete...",sock); lprintf("%04d Waiting for transfer to complete...",sock);
while(/* data_sock!=INVALID_SOCKET && removed SEP-16-2001 */ while(transfer_inprogress==TRUE) {
transfer_inprogress==TRUE && server_socket!=INVALID_SOCKET) { if(server_socket==INVALID_SOCKET) {
mswait(500); mswait(2000); /* allow xfer threads to terminate */
break;
}
if(!transfer_aborted) { if(!transfer_aborted) {
if(gettimeleft(&scfg,&user,logintime)<1) { if(gettimeleft(&scfg,&user,logintime)<1) {
lprintf("%04d Out of time, disconnecting",sock); lprintf("%04d Out of time, disconnecting",sock);
...@@ -4101,6 +4106,7 @@ static void ctrl_thread(void* arg) ...@@ -4101,6 +4106,7 @@ static void ctrl_thread(void* arg)
transfer_aborted=TRUE; transfer_aborted=TRUE;
} }
} }
mswait(500);
} }
lprintf("%04d Done waiting for transfer to complete",sock); lprintf("%04d Done waiting for transfer to complete",sock);
} }
...@@ -4251,6 +4257,8 @@ void DLLCALL ftp_server(void* arg) ...@@ -4251,6 +4257,8 @@ void DLLCALL ftp_server(void* arg)
thread_up(); thread_up();
uptime=time(NULL);
status("Initializing"); status("Initializing");
memset(&scfg, 0, sizeof(scfg)); memset(&scfg, 0, sizeof(scfg));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment