@@ -96,7 +96,7 @@ void error_log(void*, const char*, va_list);
9696void * uri_log (void *, const char *);
9797void access_log (webserver*, string);
9898size_t unescaper_func (void *, struct MHD_Connection *, char *);
99- size_t internal_unescaper (void *, char * );
99+ size_t internal_unescaper (void *, std::string& );
100100
101101struct compare_value
102102{
@@ -494,22 +494,22 @@ int webserver::build_request_args (
494494)
495495{
496496 details::modded_request* mr = static_cast <details::modded_request*>(cls);
497- char * value = ( char *) ((arg_value == NULL ) ? " " : arg_value);
497+ std::string value = ((arg_value == NULL ) ? " " : arg_value);
498498 {
499- char buf[strlen (key) + strlen ( value) + 3 ];
499+ char buf[strlen (key) + value. size ( ) + 3 ];
500500 if (mr->dhr ->querystring == " " )
501501 {
502- snprintf (buf, sizeof buf, " ?%s=%s" , key, value);
502+ snprintf (buf, sizeof buf, " ?%s=%s" , key, value. c_str () );
503503 mr->dhr ->querystring = buf;
504504 }
505505 else
506506 {
507- snprintf (buf, sizeof buf, " &%s=%s" , key, value);
507+ snprintf (buf, sizeof buf, " &%s=%s" , key, value. c_str () );
508508 mr->dhr ->querystring += string (buf);
509509 }
510510 }
511- size_t size = internal_unescaper ((void *) mr->ws , value);
512- mr->dhr ->set_arg (key, string ( value, size) );
511+ internal_unescaper ((void *) mr->ws , value);
512+ mr->dhr ->set_arg (key, value);
513513 return MHD_YES;
514514}
515515
@@ -560,15 +560,15 @@ size_t unescaper_func(void * cls, struct MHD_Connection *c, char *s)
560560 return strlen (s);
561561}
562562
563- size_t internal_unescaper (void * cls, char * s)
563+ size_t internal_unescaper (void * cls, std::string& s)
564564{
565565 if (s[0 ] == 0 ) return 0 ;
566566
567567 webserver* dws = static_cast <webserver*>(cls);
568568 if (dws->unescaper != 0x0 )
569569 {
570570 dws->unescaper (s);
571- return strlen (s );
571+ return s. size ( );
572572 }
573573
574574 return http_unescape (s);
@@ -658,15 +658,15 @@ int webserver::bodyfull_requests_answer_first_step(
658658 (
659659 0x0 != encoding &&
660660 ((0 == strncasecmp (
661- MHD_HTTP_POST_ENCODING_FORM_URLENCODED ,
661+ http_utils::http_post_encoding_form_urlencoded. c_str () ,
662662 encoding,
663- strlen (MHD_HTTP_POST_ENCODING_FORM_URLENCODED )
663+ http_utils::http_post_encoding_form_urlencoded. size ( )
664664 )
665665 )
666666 || (0 == strncasecmp (
667- MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA ,
667+ http_utils::http_post_encoding_multipart_formdata. c_str () ,
668668 encoding,
669- strlen (MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA )
669+ http_utils::http_post_encoding_multipart_formdata. size ( )
670670 )))
671671 )
672672 )
@@ -966,8 +966,10 @@ int webserver::answer_to_connection(void* cls, MHD_Connection* connection,
966966 );
967967 }
968968
969- internal_unescaper ((void *) static_cast <webserver*>(cls), (char *) url);
970- mr->standardized_url = new string (http_utils::standardize_url (url));
969+ std::string t_url = url;
970+
971+ internal_unescaper ((void *) static_cast <webserver*>(cls), t_url);
972+ mr->standardized_url = new string (http_utils::standardize_url (t_url));
971973
972974 bool body = false ;
973975
0 commit comments