aboutsummaryrefslogtreecommitdiff
path: root/src/daemon/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon/session.c')
-rw-r--r--src/daemon/session.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/daemon/session.c b/src/daemon/session.c
index 1af59e84..84ed6bc2 100644
--- a/src/daemon/session.c
+++ b/src/daemon/session.c
@@ -131,17 +131,22 @@ MHD_session_get_fdset(struct MHD_Session * session,
131 fd_set * write_fd_set, 131 fd_set * write_fd_set,
132 fd_set * except_fd_set, 132 fd_set * except_fd_set,
133 int * max_fd) { 133 int * max_fd) {
134 int fd;
135
136 fd = session->socket_fd;
137 if (fd == -1)
138 return MHD_YES;
134 if ( (session->read_close == 0) && 139 if ( (session->read_close == 0) &&
135 ( (session->headersReceived == 0) || 140 ( (session->headersReceived == 0) ||
136 (session->readLoc < session->read_buffer_size) ) ) 141 (session->readLoc < session->read_buffer_size) ) )
137 FD_SET(session->socket_fd, read_fd_set); 142 FD_SET(fd, read_fd_set);
138 if (session->response != NULL) 143 if (session->response != NULL)
139 FD_SET(session->socket_fd, write_fd_set); 144 FD_SET(fd, write_fd_set);
140 if ( (session->socket_fd > *max_fd) && 145 if ( (fd > *max_fd) &&
141 ( (session->headersReceived == 0) || 146 ( (session->headersReceived == 0) ||
142 (session->readLoc < session->read_buffer_size) || 147 (session->readLoc < session->read_buffer_size) ||
143 (session->response != NULL) ) ) 148 (session->response != NULL) ) )
144 *max_fd = session->socket_fd; 149 *max_fd = fd;
145 return MHD_YES; 150 return MHD_YES;
146} 151}
147 152
@@ -479,9 +484,9 @@ MHD_call_session_handler(struct MHD_Session * session) {
479 memmove(session->read_buffer, 484 memmove(session->read_buffer,
480 &session->read_buffer[session->readLoc - processed], 485 &session->read_buffer[session->readLoc - processed],
481 processed); 486 processed);
482 session->readLoc = processed;
483 if (session->uploadSize != -1) 487 if (session->uploadSize != -1)
484 session->uploadSize -= processed; 488 session->uploadSize -= (session->readLoc - processed);
489 session->readLoc = processed;
485 if ( (session->uploadSize == 0) || 490 if ( (session->uploadSize == 0) ||
486 ( (session->readLoc == 0) && 491 ( (session->readLoc == 0) &&
487 (session->uploadSize == -1) && 492 (session->uploadSize == -1) &&