mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-15 00:34:05 +09:00
fix storage of uri_prefix
This commit is contained in:
@@ -144,15 +144,14 @@ const char *get_playback_uuid(airplay_video_t *airplay_video) {
|
|||||||
return (const char *) airplay_video->playback_uuid;
|
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) {
|
if (airplay_video->uri_prefix) {
|
||||||
free (airplay_video->uri_prefix);
|
free (airplay_video->uri_prefix);
|
||||||
}
|
}
|
||||||
airplay_video->uri_prefix = (char *) calloc(uri_prefix_len + 1, sizeof(char));
|
airplay_video->uri_prefix = uri_prefix;
|
||||||
memcpy(airplay_video->uri_prefix, uri_prefix, uri_prefix_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *get_uri_prefix(airplay_video_t *airplay_video) {
|
const char *get_uri_prefix(airplay_video_t *airplay_video) {
|
||||||
return airplay_video->uri_prefix;
|
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 */
|
/* 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 *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_prefix_len = strlen(uri_prefix);
|
||||||
size_t uri_local_prefix_len = strlen(uri_local_prefix);
|
size_t uri_local_prefix_len = strlen(uri_local_prefix);
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ float get_start_position_seconds(airplay_video_t *airplay_video);
|
|||||||
float get_resume_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);
|
void set_playback_uuid(airplay_video_t *airplay_video, const char *playback_uuid);
|
||||||
const char *get_playback_uuid(airplay_video_t *airplay_video);
|
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);
|
void set_uri_prefix(airplay_video_t *airplay_video, char *uri_prefix);
|
||||||
char *get_uri_prefix(airplay_video_t *airplay_video);
|
const char *get_uri_prefix(airplay_video_t *airplay_video);
|
||||||
char *get_uri_local_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);
|
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:
|
// called by the POST /action handler:
|
||||||
char *process_media_data(void *media_data_store, const char *url, const char *data, int datalen);
|
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 *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);
|
char *adjust_yt_condensed_playlist(const char *media_playlist);
|
||||||
|
|
||||||
//called by the POST /play handler
|
//called by the POST /play handler
|
||||||
|
|||||||
@@ -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");
|
char *ptr = strstr(fcup_response_url, "/master.m3u8");
|
||||||
if (ptr) {
|
if (ptr) {
|
||||||
/* this is a master playlist */
|
/* 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;
|
char ** uri_list = NULL;
|
||||||
int num_uri = 0;
|
int num_uri = 0;
|
||||||
char *uri_local_prefix = get_uri_local_prefix(airplay_video);
|
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) {
|
if (!ptr) {
|
||||||
logger_log(conn->raop->logger, LOGGER_ERR, "Content-Location has unsupported form:\n%s\n", playback_location);
|
logger_log(conn->raop->logger, LOGGER_ERR, "Content-Location has unsupported form:\n%s\n", playback_location);
|
||||||
goto play_error;
|
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);
|
set_next_media_uri_id(airplay_video, 0);
|
||||||
fcup_request((void *) conn, playback_location, apple_session_id, get_next_FCUP_RequestID(airplay_video));
|
fcup_request((void *) conn, playback_location, apple_session_id, get_next_FCUP_RequestID(airplay_video));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user