possible fix for failure to print a plist

This commit is contained in:
F. Duncanh
2025-08-12 18:22:26 -04:00
parent 9d28d27702
commit 483399a713

View File

@@ -447,19 +447,30 @@ http_handler_action(raop_conn_t *conn, http_request_t *request, http_response_t
char *header_str = NULL; char *header_str = NULL;
http_request_get_header_string(request, &header_str); http_request_get_header_string(request, &header_str);
printf("\n\n%s\n", header_str); printf("\n\n%s\n", header_str);
bool is_plist = (bool) strstr(header_str,"apple-binary-plist"); bool data_is_plist = (strstr(header_str,"apple-binary-plist") != NULL);
free(header_str); free(header_str);
if (is_plist) { if (data_is_plist) {
int request_datalen; int request_datalen;
const char *request_data = http_request_get_data(request, &request_datalen); const char *request_data = http_request_get_data(request, &request_datalen);
plist_t req_root_node = NULL; plist_t req_root_node = NULL;
plist_from_bin(request_data, request_datalen, &req_root_node); plist_from_bin(request_data, request_datalen, &req_root_node);
char * plist_xml; char *plist_xml = NULL;
uint32_t plist_len; char *stripped_xml = NULL;
uint32_t plist_len = 0;
plist_to_xml(req_root_node, &plist_xml, &plist_len); plist_to_xml(req_root_node, &plist_xml, &plist_len);
plist_xml = utils_strip_data_from_plist_xml(plist_xml); printf("plist_len = %u\n", plist_len);
printf("%s", plist_xml); stripped_xml = utils_strip_data_from_plist_xml(plist_xml);
free(plist_xml); printf("%s", stripped_xml ? stripped_xml : plist_xml);
if (stripped_xml) {
free(stripped_xml);
}
if (plist_xml) {
#ifdef PLIST_230
plist_mem_free(plist_xml);
#else
plist_to_xml_free(plist_xml);
#endif
}
plist_free(req_root_node); plist_free(req_root_node);
} }
assert(0); assert(0);