logger_t *logger;
httpd_callbacks_t callbacks;
- int use_rtsp;
-
int max_connections;
int open_connections;
http_connection_t *connections;
};
httpd_t *
-httpd_init(logger_t *logger, httpd_callbacks_t *callbacks, int max_connections, int use_rtsp)
+httpd_init(logger_t *logger, httpd_callbacks_t *callbacks, int max_connections)
{
httpd_t *httpd;
return NULL;
}
- httpd->use_rtsp = !!use_rtsp;
httpd->max_connections = max_connections;
httpd->connections = calloc(max_connections, sizeof(http_connection_t));
if (!httpd->connections) {
continue;
}
}
- if (FD_ISSET(httpd->server_fd6, &rfds)) {
+ if (httpd->server_fd6 != -1 && FD_ISSET(httpd->server_fd6, &rfds)) {
ret = httpd_accept_connection(httpd, httpd->server_fd6, 1);
if (ret == -1) {
break;
/* If not in the middle of request, allocate one */
if (!connection->request) {
- connection->request = http_request_init(httpd->use_rtsp);
+ connection->request = http_request_init();
assert(connection->request);
}
}
written += ret;
}
+
+ if (http_response_get_disconnect(response)) {
+ logger_log(httpd->logger, LOGGER_INFO, "Disconnecting on software request");
+ httpd_remove_connection(httpd, connection);
+ }
} else {
logger_log(httpd->logger, LOGGER_INFO, "Didn't get response");
}
http_response_destroy(response);
+ } else {
+ logger_log(httpd->logger, LOGGER_DEBUG, "Request not complete, waiting for more data...");
}
}
}
httpd_remove_connection(httpd, connection);
}
+ /* Close server sockets since they are not used any more */
+ if (httpd->server_fd4 != -1) {
+ closesocket(httpd->server_fd4);
+ httpd->server_fd4 = -1;
+ }
+ if (httpd->server_fd6 != -1) {
+ closesocket(httpd->server_fd6);
+ httpd->server_fd6 = -1;
+ }
+
logger_log(httpd->logger, LOGGER_INFO, "Exiting HTTP thread");
return 0;