/*
- * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2010 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
{
struct sender_client *sc, *tmp;
struct private_http_sender_data *phsd;
+ int ret;
- if (hss->listen_fd < 0)
- return;
list_for_each_entry_safe(sc, tmp, &hss->client_list, node) {
phsd = sc->private_data;
switch (phsd->status) {
case HTTP_STREAMING: /* nothing to do */
break;
case HTTP_CONNECTED: /* need to recv get request */
- if (FD_ISSET(sc->fd, rfds)) {
- if (recv_pattern(sc->fd, HTTP_GET_MSG, MAXLINE)
- < 0) {
- phsd->status = HTTP_INVALID_GET_REQUEST;
- } else {
- phsd->status = HTTP_GOT_GET_REQUEST;
- PARA_INFO_LOG("received get request\n");
- }
+ ret = read_pattern(sc->fd, HTTP_GET_MSG, MAXLINE, rfds);
+ if (ret < 0)
+ phsd->status = HTTP_INVALID_GET_REQUEST;
+ else if (ret > 0) {
+ phsd->status = HTTP_GOT_GET_REQUEST;
+ PARA_INFO_LOG("received get request\n");
}
break;
case HTTP_GOT_GET_REQUEST: /* need to send ok msg */
break;
}
}
- if (!FD_ISSET(hss->listen_fd, rfds))
- return;
- sc = accept_sender_client(hss);
+ sc = accept_sender_client(hss, rfds);
if (!sc)
return;
phsd = para_malloc(sizeof(*phsd));