Author: file
Date: Sun Aug 17 11:11:27 2014
New Revision: 421211

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=421211
Log:
res_http_websocket: Include query parameters in client connection requests.

Review: https://reviewboard.asterisk.org/r/3914/
........

Merged revisions 421210 from http://svn.asterisk.org/svn/asterisk/branches/13

Modified:
    trunk/   (props changed)
    trunk/res/res_http_websocket.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-13-merged' - no diff available.

Modified: trunk/res/res_http_websocket.c
URL: 
http://svnview.digium.com/svn/asterisk/trunk/res/res_http_websocket.c?view=diff&rev=421211&r1=421210&r2=421211
==============================================================================
--- trunk/res/res_http_websocket.c (original)
+++ trunk/res/res_http_websocket.c Sun Aug 17 11:11:27 2014
@@ -174,7 +174,8 @@
        if (session->f) {
                ast_websocket_close(session, 0);
                fclose(session->f);
-               ast_verb(2, "WebSocket connection from '%s' closed\n", 
ast_sockaddr_stringify(&session->address));
+               ast_verb(2, "WebSocket connection %s '%s' closed\n", 
session->client ? "to" : "from",
+                       ast_sockaddr_stringify(&session->address));
        }
 
        ao2_cleanup(session->client);
@@ -885,7 +886,7 @@
  * The returned host will contain the address and optional port while
  * path will contain everything after the address/port if included.
  */
-static int websocket_client_parse_uri(const char *uri, char **host, char 
**path)
+static int websocket_client_parse_uri(const char *uri, char **host, struct 
ast_str **path)
 {
        struct ast_uri *parsed_uri = ast_uri_parse_websocket(uri);
 
@@ -895,9 +896,20 @@
 
        *host = ast_uri_make_host_with_port(parsed_uri);
 
-       if (ast_uri_path(parsed_uri) && !(*path = 
ast_strdup(ast_uri_path(parsed_uri)))) {
-               ao2_ref(parsed_uri, -1);
-               return -1;
+       if (ast_uri_path(parsed_uri) || ast_uri_query(parsed_uri)) {
+               *path = ast_str_create(64);
+               if (!*path) {
+                       ao2_ref(parsed_uri, -1);
+                       return -1;
+               }
+
+               if (ast_uri_path(parsed_uri)) {
+                       ast_str_set(path, 0, "%s", ast_uri_path(parsed_uri));
+               }
+
+               if (ast_uri_query(parsed_uri)) {
+                       ast_str_append(path, 0, "?%s", 
ast_uri_query(parsed_uri));
+               }
        }
 
        ao2_ref(parsed_uri, -1);
@@ -976,7 +988,7 @@
        /*! host portion of client uri */
        char *host;
        /*! path for logical websocket connection */
-       char *resource_name;
+       struct ast_str *resource_name;
        /*! unique key used during server handshaking */
        char *key;
        /*! container for registered protocols */
@@ -1166,7 +1178,7 @@
                    "Host: %s\r\n"
                    "Sec-WebSocket-Key: %s\r\n"
                    "%s\r\n",
-                   client->resource_name,
+                   client->resource_name ? 
ast_str_buffer(client->resource_name) : "",
                    client->version,
                    client->host,
                    client->key,


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to