X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=http_send.c;h=2646ebb8f7973ae72cbeb1b85e7ddccbd989b172;hp=25d9ac18cefdd5353909864aa6ec1001061d9170;hb=cbbf2c8ba131066dd6f2f2e724e59bcde0fd23ae;hpb=f47f21ba8703dfbd05ad8faf1c75869ff7f97f38 diff --git a/http_send.c b/http_send.c index 25d9ac18..2646ebb8 100644 --- a/http_send.c +++ b/http_send.c @@ -36,8 +36,6 @@ enum http_status { HTTP_CONNECTED, /** Successfully received the get request. */ HTTP_GOT_GET_REQUEST, - /** We sent the OK message back to the client. */ - HTTP_SENT_OK_MSG, /** Connection is ready for sending audio data. */ HTTP_STREAMING, /** We didn't receive a valid get request. */ @@ -59,10 +57,6 @@ struct http_client { char *name; /** The client's current status. */ enum http_status status; - /** Non-zero if we included \a fd in the read set.*/ - int check_r; - /** Non-zero if we included \a fd in the write set. */ - int check_w; /** The position of this client in the client list. */ struct list_head node; /** non-zero if audio file header has been sent */ @@ -200,7 +194,7 @@ static void http_send(long unsigned current_chunk, } } -static void http_post_select(fd_set *rfds, fd_set *wfds) +static void http_post_select(fd_set *rfds, __a_unused fd_set *wfds) { int i = -1, match; struct http_client *hc, *tmp; @@ -215,7 +209,7 @@ static void http_post_select(fd_set *rfds, fd_set *wfds) case HTTP_STREAMING: /* nothing to do */ break; case HTTP_CONNECTED: /* need to recv get request */ - if (hc->check_r && FD_ISSET(hc->fd, rfds)) { + if (FD_ISSET(hc->fd, rfds)) { if (recv_pattern(hc->fd, HTTP_GET_MSG, MAXLINE) < 0) { hc->status = HTTP_INVALID_GET_REQUEST; @@ -227,21 +221,12 @@ static void http_post_select(fd_set *rfds, fd_set *wfds) } break; case HTTP_GOT_GET_REQUEST: /* need to send ok msg */ - if (hc->check_w && FD_ISSET(hc->fd, wfds)) { - hc->status = HTTP_SENT_OK_MSG; - http_send_ok_msg(hc); - } + hc->status = HTTP_STREAMING; + http_send_ok_msg(hc); break; case HTTP_INVALID_GET_REQUEST: /* need to send err msg */ - if (hc->check_w && FD_ISSET(hc->fd, wfds)) { - if (http_send_err_msg(hc) >= 0) - http_shutdown_client(hc, - "invalid get request"); - } - break; - case HTTP_SENT_OK_MSG: /* need to send header? */ - if (hc->check_w && FD_ISSET(hc->fd, wfds)) - hc->status = HTTP_STREAMING; + if (http_send_err_msg(hc) >= 0) + http_shutdown_client(hc, "invalid get request"); break; } } @@ -285,7 +270,7 @@ err_out: free(hc); } -static void http_pre_select(int *max_fileno, fd_set *rfds, fd_set *wfds) +static void http_pre_select(int *max_fileno, fd_set *rfds, __a_unused fd_set *wfds) { struct http_client *hc, *tmp; @@ -294,25 +279,13 @@ static void http_pre_select(int *max_fileno, fd_set *rfds, fd_set *wfds) para_fd_set(listen_fd, rfds, max_fileno); list_for_each_entry_safe(hc, tmp, &clients, node) { //PARA_DEBUG_LOG("hc %p on fd %d: status %d\n", hc, hc->fd, hc->status); - hc->check_r = 0; - hc->check_w = 0; switch (hc->status) { case HTTP_STREAMING: - break; - case HTTP_CONNECTED: /* need to recv get request */ - para_fd_set(hc->fd, rfds, max_fileno); - hc->check_r = 1; - break; case HTTP_GOT_GET_REQUEST: /* need to send ok msg */ case HTTP_INVALID_GET_REQUEST: /* need to send err msg */ - para_fd_set(hc->fd, wfds, max_fileno); - hc->check_w = 1; break; - case HTTP_SENT_OK_MSG: - if (!vss_playing()) - break; /* wait until server starts playing */ - para_fd_set(hc->fd, wfds, max_fileno); - hc->check_w = 1; + case HTTP_CONNECTED: /* need to recv get request */ + para_fd_set(hc->fd, rfds, max_fileno); break; } }