Commit 7d87f71d authored by Max Kellermann's avatar Max Kellermann

command: check URI scheme in "addid"

Check if the URI scheme is supported by MPD, and print an error message if not. Optimize the checks in "add" and "playlistadd".
parent ef0b328a
...@@ -461,15 +461,16 @@ handle_add(struct client *client, G_GNUC_UNUSED int argc, char *argv[]) ...@@ -461,15 +461,16 @@ handle_add(struct client *client, G_GNUC_UNUSED int argc, char *argv[])
return print_playlist_result(client, result); return print_playlist_result(client, result);
} }
if (isRemoteUrl(uri))
return addToPlaylist(uri, NULL);
if (uri_has_scheme(uri)) { if (uri_has_scheme(uri)) {
if (!isRemoteUrl(uri)) {
command_error(client, ACK_ERROR_NO_EXIST, command_error(client, ACK_ERROR_NO_EXIST,
"unsupported URI scheme"); "unsupported URI scheme");
return COMMAND_RETURN_ERROR; return COMMAND_RETURN_ERROR;
} }
return addToPlaylist(uri, NULL);
}
result = addAllIn(uri); result = addAllIn(uri);
if (result == (enum playlist_result)-1) { if (result == (enum playlist_result)-1) {
command_error(client, ACK_ERROR_NO_EXIST, command_error(client, ACK_ERROR_NO_EXIST,
...@@ -495,8 +496,15 @@ handle_addid(struct client *client, int argc, char *argv[]) ...@@ -495,8 +496,15 @@ handle_addid(struct client *client, int argc, char *argv[])
client_get_uid(client), client_get_uid(client),
&added_id); &added_id);
#endif #endif
} else } else {
if (uri_has_scheme(uri) && !isRemoteUrl(uri)) {
command_error(client, ACK_ERROR_NO_EXIST,
"unsupported URI scheme");
return COMMAND_RETURN_ERROR;
}
result = addToPlaylist(uri, &added_id); result = addToPlaylist(uri, &added_id);
}
if (result != PLAYLIST_RESULT_SUCCESS) if (result != PLAYLIST_RESULT_SUCCESS)
return print_playlist_result(client, result); return print_playlist_result(client, result);
...@@ -1249,12 +1257,14 @@ handle_playlistadd(struct client *client, G_GNUC_UNUSED int argc, char *argv[]) ...@@ -1249,12 +1257,14 @@ handle_playlistadd(struct client *client, G_GNUC_UNUSED int argc, char *argv[])
char *uri = argv[2]; char *uri = argv[2];
enum playlist_result result; enum playlist_result result;
if (isRemoteUrl(uri)) if (uri_has_scheme(uri)) {
result = spl_append_uri(uri, playlist); if (!isRemoteUrl(uri)) {
else if (uri_has_scheme(uri)) {
command_error(client, ACK_ERROR_NO_EXIST, command_error(client, ACK_ERROR_NO_EXIST,
"unsupported URI scheme"); "unsupported URI scheme");
return COMMAND_RETURN_ERROR; return COMMAND_RETURN_ERROR;
}
result = spl_append_uri(uri, playlist);
} else } else
result = addAllInToStoredPlaylist(uri, playlist); result = addAllInToStoredPlaylist(uri, playlist);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment