@@ -312,12 +312,9 @@ int LibWebsocketServer::eventCallback(struct lws* wsi, enum lws_callback_reasons
312312            if  (strcmp (" websocket"  , static_cast <char *>(in)) == 0 )
313313            {
314314                //  Check URI
315- #ifdef  _MSC_VER
316-                 char  uri[512u ];
317- #else   //  _MSC_VER
318-                 char  uri[lws_hdr_total_length (wsi, WSI_TOKEN_GET_URI) + 1 ];
319- #endif  //  _MSC_VER
320-                 int  uri_len = lws_hdr_copy (wsi, uri, sizeof (uri), WSI_TOKEN_GET_URI);
315+                 const  size_t  uri_size = lws_hdr_total_length (wsi, WSI_TOKEN_GET_URI) + 1 ;
316+                 char * uri     = new  char [uri_size];
317+                 int    uri_len = lws_hdr_copy (wsi, uri, uri_size, WSI_TOKEN_GET_URI);
321318                if  ((uri_len >= static_cast <int >(server->m_url .path ().size ())) &&
322319                    (strncmp (uri, server->m_url .path ().c_str (), server->m_url .path ().size ()) == 0 ))
323320                {
@@ -423,6 +420,7 @@ int LibWebsocketServer::eventCallback(struct lws* wsi, enum lws_callback_reasons
423420                    lwsl_err (" invalid URI\n "  );
424421                    ret = -1 ;
425422                }
423+                 delete[]  uri;
426424            }
427425            else 
428426            {
@@ -442,16 +440,14 @@ int LibWebsocketServer::eventCallback(struct lws* wsi, enum lws_callback_reasons
442440            server->m_clients [wsi] = client;
443441
444442            //  Notify connection
445- #ifdef  _MSC_VER
446-             char  uri[512u ];
447- #else   //  _MSC_VER
448-             char  uri[lws_hdr_total_length (wsi, WSI_TOKEN_GET_URI) + 1 ];
449- #endif  //  _MSC_VER
450-             if  (lws_hdr_copy (wsi, uri, sizeof (uri), WSI_TOKEN_GET_URI) <= 0 )
443+             const  size_t  uri_size = lws_hdr_total_length (wsi, WSI_TOKEN_GET_URI) + 1 ;
444+             char * uri = new  char [uri_size];
445+             if  (lws_hdr_copy (wsi, uri, uri_size, WSI_TOKEN_GET_URI) <= 0 )
451446            {
452447                uri[0 ] = 0 ;
453448            }
454449            server->m_listener ->wsClientConnected (uri, client);
450+             delete[]  uri;
455451        }
456452        break ;
457453
0 commit comments