struct http_response_s {
int complete;
+ int disconnect;
char *data;
int data_size;
response->complete = 1;
}
+void
+http_response_set_disconnect(http_response_t *response, int disconnect)
+{
+ assert(response);
+
+ response->disconnect = !!disconnect;
+}
+
+int
+http_response_get_disconnect(http_response_t *response)
+{
+ assert(response);
+
+ return response->disconnect;
+}
+
const char *
http_response_get_data(http_response_t *response, int *datalen)
{
void http_response_add_header(http_response_t *response, const char *name, const char *value);
void http_response_finish(http_response_t *response, const char *data, int datalen);
+void http_response_set_disconnect(http_response_t *response, int disconnect);
+int http_response_get_disconnect(http_response_t *response);
+
const char *http_response_get_data(http_response_t *response, int *datalen);
void http_response_destroy(http_response_t *response);
}
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");
}
conn->raop_rtp = raop_rtp_init(raop->logger, &raop->callbacks, remotestr, rtpmapstr, fmtpstr, aeskey, aesiv);
if (!conn->raop_rtp) {
logger_log(conn->raop->logger, LOGGER_ERR, "Error initializing the audio decoder");
+ http_response_set_disconnect(res, 1);
}
sdp_destroy(sdp);
}
if (conn->raop_rtp) {
raop_rtp_start(conn->raop_rtp, use_udp, remote_cport, remote_tport, &cport, &tport, &dport);
} else {
- logger_log(conn->raop->logger, LOGGER_CRIT, "RAOP not initialized at SETUP, playing will fail!");
+ logger_log(conn->raop->logger, LOGGER_ERR, "RAOP not initialized at SETUP, playing will fail!");
+ http_response_set_disconnect(res, 1);
}
memset(buffer, 0, sizeof(buffer));
}
http_response_finish(res, NULL, 0);
- logger_log(conn->raop->logger, LOGGER_DEBUG, "Got request %s with URL %s", method, http_request_get_url(request));
+ logger_log(conn->raop->logger, LOGGER_DEBUG, "Handled request %s with URL %s", method, http_request_get_url(request));
*response = res;
}