diff --git a/src/protocol/fsp/fsp.c b/src/protocol/fsp/fsp.c index 92ebef3cb..4cc191f83 100644 --- a/src/protocol/fsp/fsp.c +++ b/src/protocol/fsp/fsp.c @@ -156,7 +156,7 @@ fsp_directory(FSP_SESSION *ses, struct uri *uri) } printf("
", buf.source, buf.source); + "", buf.source, buf.source); dir = fsp_opendir(ses, data); if (!dir) goto end; @@ -173,7 +173,7 @@ fsp_directory(FSP_SESSION *ses, struct uri *uri) } else { dircolor[0] = 0; } - + while (!fsp_readdir_native(dir, &fentry, &fresult)) { if (!fresult) break; printf("%10d\t", fentry.size, fentry.name); @@ -239,10 +239,10 @@ fsp_got_data(struct socket *socket, struct read_buffer *rb) abort_connection(conn, -errno); return; } + if (len == 0) { if (conn->from) normalize_cache_entry(conn->cached, conn->from); - close_socket(socket); abort_connection(conn, S_OK); return; } @@ -253,6 +253,7 @@ fsp_got_data(struct socket *socket, struct read_buffer *rb) conn->tries = 0; conn->from += len; kill_buffer_data(rb, len); + read_from_socket(socket, rb, S_TRANS, fsp_got_data); } @@ -263,7 +264,7 @@ void fsp_protocol_handler(struct connection *conn) { int fsp_pipe[2] = { -1, -1 }; - int cpid; + pid_t cpid; struct read_buffer *buf; if (c_pipe(fsp_pipe)) { @@ -304,7 +305,7 @@ fsp_protocol_handler(struct connection *conn) close_all_non_term_fd(); do_fsp(conn); - + } else { conn->socket->fd = fsp_pipe[0]; close(fsp_pipe[1]);