rendered paste bodyIndex: main/manager.c===================================================================--- main/manager.c (revision 114599)+++ main/manager.c (working copy)@@ -2654,6 +2654,7 @@ struct ast_variable *v; for (v = params; v; v = v->next) {+ ast_log(LOG_NOTICE, "Loop hit - v->name = %s, v->value = %s\n", v->name, v->value); if (!strcasecmp(v->name, "mansession_id")) { sscanf(v->value, "%x", &ident); break;Index: main/http.c===================================================================--- main/http.c (revision 114599)+++ main/http.c (working copy)@@ -379,15 +379,47 @@ return c; } +static struct ast_variable *parse_cookies(char *cookies)+{+ char *cur;+ struct ast_variable *vars = NULL, *var;++ /* Skip Cookie: */+ cookies += 8;++ while ((cur = strsep(&cookies, ";"))) {+ char *name, *val;+ + name = val = cur;+ strsep(&val, "=");++ name = ast_strip(name);+ val = ast_strip_quoted(val, "\"", "\"");++ if (ast_strlen_zero(name) || ast_strlen_zero(val)) {+ continue;+ }++ if (option_debug) {+ ast_log(LOG_DEBUG, "mmm ... cookie! Name: '%s' Value: '%s'\n", name, val);+ }++ var = ast_variable_new(name, val);+ var->next = vars;+ vars = var;+ }++ return vars;+}+ static void *ast_httpd_helper_thread(void *data) { char buf[4096]; char cookie[4096]; char timebuf[256]; struct ast_http_server_instance *ser = data;- struct ast_variable *var, *prev=NULL, *vars=NULL;+ struct ast_variable *vars = NULL; char *uri, *c, *title=NULL;- char *vname, *vval; int status = 200, contentlength = 0; time_t t; unsigned int static_content = 0;@@ -417,58 +449,13 @@ while (fgets(cookie, sizeof(cookie), ser->f)) { /* Trim trailing characters */- while(!ast_strlen_zero(cookie) && (cookie[strlen(cookie) - 1] < 33)) {+ while (!ast_strlen_zero(cookie) && (cookie[strlen(cookie) - 1] < 33)) { cookie[strlen(cookie) - 1] = '\0'; } if (ast_strlen_zero(cookie)) break; if (!strncasecmp(cookie, "Cookie: ", 8)) {-- /* TODO - The cookie parsing code below seems to work - in IE6 and FireFox 1.5. However, it is not entirely - correct, and therefore may not work in all - circumstances. - For more details see RFC 2109 and RFC 2965 */- - /* FireFox cookie strings look like: - Cookie: mansession_id="********" - InternetExplorer's look like: - Cookie: $Version="1"; mansession_id="********" */- - /* If we got a FireFox cookie string, the name's right - after "Cookie: " */- vname = cookie + 8;- - /* If we got an IE cookie string, we need to skip to - past the version to get to the name */- if (*vname == '$') {- vname = strchr(vname, ';');- if (vname) { - vname++;- if (*vname == ' ')- vname++;- }- }- - if (vname) {- vval = strchr(vname, '=');- if (vval) {- /* Ditch the = and the quotes */- *vval++ = '\0';- if (*vval)- vval++;- if (strlen(vval))- vval[strlen(vval) - 1] = '\0';- var = ast_variable_new(vname, vval);- if (var) {- if (prev)- prev->next = var;- else- vars = var;- prev = var;- }- }- }+ vars = parse_cookies(cookie); } }