diff --git a/src/httpd_daap.c b/src/httpd_daap.c index f2dd6cf9..a15f718d 100644 --- a/src/httpd_daap.c +++ b/src/httpd_daap.c @@ -2643,6 +2643,7 @@ daap_reply_extra_data(struct evhttp_request *req, struct evbuffer *evbuf, char * char clen[32]; struct daap_session *s; const char *param; + char *ctype; int id; int max_w; int max_h; @@ -2696,20 +2697,29 @@ daap_reply_extra_data(struct evhttp_request *req, struct evbuffer *evbuf, char * } if (strcmp(uri[2], "groups") == 0) - ret = artwork_get_group(id, max_w, max_h, ART_CAN_PNG, evbuf); + ret = artwork_get_group(id, max_w, max_h, ART_CAN_PNG | ART_CAN_JPEG, evbuf); else if (strcmp(uri[2], "items") == 0) - ret = artwork_get_item(id, max_w, max_h, ART_CAN_PNG, evbuf); + ret = artwork_get_item(id, max_w, max_h, ART_CAN_PNG | ART_CAN_JPEG, evbuf); - if (ret < 0) + switch (ret) { - if (EVBUFFER_LENGTH(evbuf) > 0) - evbuffer_drain(evbuf, EVBUFFER_LENGTH(evbuf)); + case ART_FMT_PNG: + ctype = "image/png"; + break; - goto no_artwork; + case ART_FMT_JPEG: + ctype = "image/jpeg"; + break; + + default: + if (EVBUFFER_LENGTH(evbuf) > 0) + evbuffer_drain(evbuf, EVBUFFER_LENGTH(evbuf)); + + goto no_artwork; } evhttp_remove_header(req->output_headers, "Content-Type"); - evhttp_add_header(req->output_headers, "Content-Type", "image/png"); + evhttp_add_header(req->output_headers, "Content-Type", ctype); snprintf(clen, sizeof(clen), "%ld", (long)EVBUFFER_LENGTH(evbuf)); evhttp_add_header(req->output_headers, "Content-Length", clen);