fix storage of uri_prefix

This commit is contained in:
F. Duncanh
2025-11-17 10:02:23 -05:00
parent afbb0bc0a1
commit 62214af028
3 changed files with 13 additions and 11 deletions

View File

@@ -144,15 +144,14 @@ const char *get_playback_uuid(airplay_video_t *airplay_video) {
return (const char *) airplay_video->playback_uuid;
}
void set_uri_prefix(airplay_video_t *airplay_video, char *uri_prefix, int uri_prefix_len) {
void set_uri_prefix(airplay_video_t *airplay_video, char *uri_prefix) {
if (airplay_video->uri_prefix) {
free (airplay_video->uri_prefix);
}
airplay_video->uri_prefix = (char *) calloc(uri_prefix_len + 1, sizeof(char));
memcpy(airplay_video->uri_prefix, uri_prefix, uri_prefix_len);
airplay_video->uri_prefix = uri_prefix;
}
char *get_uri_prefix(airplay_video_t *airplay_video) {
const char *get_uri_prefix(airplay_video_t *airplay_video) {
return airplay_video->uri_prefix;
}
@@ -509,7 +508,7 @@ int create_media_uri_table(const char *url_prefix, const char *master_playlist_d
/* Adjust uri prefixes in the Master Playlist, for sending to the Media Player */
char *adjust_master_playlist (char *fcup_response_data, int fcup_response_datalen,
char *uri_prefix, char *uri_local_prefix) {
const char *uri_prefix, char *uri_local_prefix) {
size_t uri_prefix_len = strlen(uri_prefix);
size_t uri_local_prefix_len = strlen(uri_local_prefix);
int counter = 0;

View File

@@ -33,8 +33,8 @@ float get_start_position_seconds(airplay_video_t *airplay_video);
float get_resume_position_seconds(airplay_video_t *airplay_video);
void set_playback_uuid(airplay_video_t *airplay_video, const char *playback_uuid);
const char *get_playback_uuid(airplay_video_t *airplay_video);
void set_uri_prefix(airplay_video_t *airplay_video, char *uri_prefix, int uri_prefix_len);
char *get_uri_prefix(airplay_video_t *airplay_video);
void set_uri_prefix(airplay_video_t *airplay_video, char *uri_prefix);
const char *get_uri_prefix(airplay_video_t *airplay_video);
char *get_uri_local_prefix(airplay_video_t *airplay_video);
int get_next_FCUP_RequestID(airplay_video_t *airplay_video);
@@ -67,7 +67,7 @@ void media_data_store_destroy(void *media_data_store);
// called by the POST /action handler:
char *process_media_data(void *media_data_store, const char *url, const char *data, int datalen);
char *adjust_master_playlist (char *fcup_response_data, int fcup_response_datalen,
char *uri_prefix, char *uri_local_prefix);
const char *uri_prefix, char *uri_local_prefix);
char *adjust_yt_condensed_playlist(const char *media_playlist);
//called by the POST /play handler

View File

@@ -575,7 +575,7 @@ http_handler_action(raop_conn_t *conn, http_request_t *request, http_response_t
char *ptr = strstr(fcup_response_url, "/master.m3u8");
if (ptr) {
/* this is a master playlist */
char *uri_prefix = get_uri_prefix(airplay_video);
const char *uri_prefix = get_uri_prefix(airplay_video);
char ** uri_list = NULL;
int num_uri = 0;
char *uri_local_prefix = get_uri_local_prefix(airplay_video);
@@ -741,9 +741,12 @@ http_handler_play(raop_conn_t *conn, http_request_t *request, http_response_t *r
if (!ptr) {
logger_log(conn->raop->logger, LOGGER_ERR, "Content-Location has unsupported form:\n%s\n", playback_location);
goto play_error;
} else {
int prefix_len = (int) (ptr - playback_location);
char *uri_prefix = (char *) calloc(prefix_len + 1, sizeof(char));
memcpy(uri_prefix, playback_location, prefix_len);
set_uri_prefix(airplay_video, uri_prefix);
}
int prefix_len = (int) (ptr - playback_location);
set_uri_prefix(airplay_video, playback_location, prefix_len);
set_next_media_uri_id(airplay_video, 0);
fcup_request((void *) conn, playback_location, apple_session_id, get_next_FCUP_RequestID(airplay_video));