diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2014-08-18 14:56:56 (GMT) |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2014-08-18 14:56:56 (GMT) |
commit | aeb78c6cb31cd638b0a7dd92de3b9817ced53eb5 (patch) | |
tree | dea50013d80fc8140ec0f3c75c5a20a3aa3f8e0e /src | |
parent | 281222987d800e76049d4667a7bdd6b4a8f20660 (diff) | |
download | soup-transcoding-proxy-aeb78c6cb31cd638b0a7dd92de3b9817ced53eb5.zip soup-transcoding-proxy-aeb78c6cb31cd638b0a7dd92de3b9817ced53eb5.tar.gz |
server: Add /stream/ prefix for streaming URLs
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 33 |
1 files changed, 20 insertions, 13 deletions
@@ -31,11 +31,16 @@ #include "debug/local-play.h" #endif -#define STP_REST_LIST_STREAMS "/api/list-streams" -#define STP_REST_ABORT_STREAM "/api/abort-stream" -#define STP_REST_ADD_TOKEN "/api/add-token" -#define STP_REST_REVOKE_TOKEN "/api/revoke-token" -#define STP_REST_LIST_TOKENS "/api/list-tokens" +#define STP_STREAM_PREFIX "/stream/" +#define STP_REST_API_PREFIX "/api/" + +#define STP_REST_LIST_STREAMS STP_REST_API_PREFIX "list-streams" +#define STP_REST_ABORT_STREAM STP_REST_API_PREFIX "abort-stream" +#define STP_REST_ADD_TOKEN STP_REST_API_PREFIX "add-token" +#define STP_REST_REVOKE_TOKEN STP_REST_API_PREFIX "revoke-token" +#define STP_REST_LIST_TOKENS STP_REST_API_PREFIX "list-tokens" + +#define STP_SESSIONID(X) &X[sizeof(STP_STREAM_PREFIX)-1] typedef struct _STPHashTables STPHashTables; @@ -74,7 +79,8 @@ get_server_ctx_from_msg (SoupMessage *msg, STPServerCtx *ctx; g_object_get (msg, "uri", &uri, NULL); - ctx = g_hash_table_lookup (ctx_table, &soup_uri_get_path (uri)[1]); + ctx = g_hash_table_lookup (ctx_table, + STP_SESSIONID (soup_uri_get_path (uri))); soup_uri_free (uri); if (!ctx) @@ -633,15 +639,16 @@ got_request_headers (SoupMessage *msg, /* Token API methods are handled in the server callbacks, * so we ignore those paths here. */ - if (g_str_has_prefix (path, STP_REST_LIST_STREAMS) || - g_str_has_prefix (path, STP_REST_ABORT_STREAM) || - g_str_has_prefix (path, STP_REST_ADD_TOKEN) || - g_str_has_prefix (path, STP_REST_REVOKE_TOKEN) || - g_str_has_prefix (path, STP_REST_LIST_TOKENS)) + if (g_str_has_prefix (path, STP_REST_API_PREFIX)) goto out; - /* Remove the leading '/' to get the session id */ - sessionid = &path[1]; + /* Reject non-stream-prefix requests */ + if (!g_str_has_prefix (path, STP_STREAM_PREFIX)) { + soup_message_set_status (msg, SOUP_STATUS_NOT_FOUND); + goto out; + } + /* Remove the leading '/stream/' to get the session id */ + sessionid = STP_SESSIONID(path); if (msg->method == SOUP_METHOD_PUT || msg->method == SOUP_METHOD_POST) |