Index: nopoll_conn.c =================================================================== --- nopoll_conn.c (revision 114) +++ nopoll_conn.c (working copy) @@ -519,7 +519,7 @@ conn->host_name = strdup (host_ip); else conn->host_name = strdup (host_name); - + /* build origin */ if (origin == NULL) conn->origin = nopoll_strdup_printf ("http://%s", conn->host_name); @@ -942,6 +942,14 @@ return conn->host; } +const char * nopoll_conn_get_cookies (noPollConn * conn) +{ + if (conn == NULL) + return NULL; + return conn->cookies; +} + + /** * @brief Allows to get the connection Origin header content received. * @@ -1165,6 +1173,8 @@ nopoll_free (conn->origin); nopoll_free (conn->protocols); nopoll_free (conn->get_url); + if (conn->cookies != NULL) + nopoll_free(conn->cookies); /* release TLS certificates */ nopoll_free (conn->certificate_file); @@ -1499,7 +1509,7 @@ /* copy the header value */ (*header) = nopoll_new (char, iterator + 1); memcpy (*header, buffer, iterator); - + /* now get the mime header value */ iterator2 = iterator + 1; while (iterator2 < buffer_size && buffer[iterator2] && buffer[iterator2] != '\n') @@ -1751,7 +1761,6 @@ nopoll_conn_shutdown (conn); return 0; } - /* ok, process here predefined headers */ if (nopoll_conn_check_mime_header_repeated (conn, header, value, "Host", conn->host_name)) return 0; @@ -1767,6 +1776,8 @@ return 0; if (nopoll_conn_check_mime_header_repeated (conn, header, value, "Sec-WebSocket-Version", conn->handshake->websocket_version)) return 0; + if (nopoll_conn_check_mime_header_repeated (conn, header, value, "Cookie", conn->cookies)) + return 0; /* set the value if required */ if (strcasecmp (header, "Host") == 0) @@ -1782,6 +1793,8 @@ else if (strcasecmp (header, "Upgrade") == 0) { conn->handshake->upgrade_websocket = 1; nopoll_free (value); + } else if (strcasecmp(header,"Cookie") == 0){ + conn->cookies = value; } else if (strcasecmp (header, "Connection") == 0) { conn->handshake->connection_upgrade = 1; nopoll_free (value); Index: nopoll_conn.h =================================================================== --- nopoll_conn.h (revision 114) +++ nopoll_conn.h (working copy) @@ -96,6 +96,8 @@ const char * nopoll_conn_get_host_header (noPollConn * conn); +const char * nopoll_conn_get_cookies (noPollConn * conn); + void nopoll_conn_shutdown (noPollConn * conn); void nopoll_conn_close (noPollConn * conn); Index: nopoll_private.h =================================================================== --- nopoll_private.h (revision 114) +++ nopoll_private.h (working copy) @@ -190,6 +190,12 @@ * @internal Host name requested on the connection. */ char * host_name; + + /** + * @internal Raw unparsed Cookie header value. + */ + char * cookies; + /** * @internal Origin requested on the connection. */