@@ -678,7 +678,6 @@ bool cWebem::CheckForPageOverride(WebEmSession & session, request& req, reply& r
678
678
rep.content .append (retstr.c_str (), retstr.size ());
679
679
680
680
std::string strMimeType=mime_types::extension_to_type (extension);
681
- int extraheaders=0 ;
682
681
if (session.outputfilename !=" " )
683
682
{
684
683
std::size_t last_dot_pos = session.outputfilename .find_last_of (" ." );
@@ -687,58 +686,36 @@ bool cWebem::CheckForPageOverride(WebEmSession & session, request& req, reply& r
687
686
extension = session.outputfilename .substr (last_dot_pos + 1 );
688
687
strMimeType=mime_types::extension_to_type (extension);
689
688
}
690
- extraheaders=1 ;
691
- }
692
- if (req.keep_alive ) {
693
- extraheaders += 2 ;
694
689
}
695
690
696
- int iHeader = 0 ;
697
691
if (!boost::algorithm::starts_with (strMimeType, " image" ))
698
692
{
699
- rep.headers .resize (5 + extraheaders);
700
- rep.headers [iHeader].name = " Content-Length" ;
701
- rep.headers [iHeader++].value = boost::lexical_cast<std::string>(rep.content .size ());
702
- rep.headers [iHeader].name = " Content-Type" ;
703
- rep.headers [iHeader].value = strMimeType;
704
- rep.headers [iHeader++].value += " ;charset=UTF-8" ; // ISO-8859-1
705
- rep.headers [iHeader].name = " Cache-Control" ;
706
- rep.headers [iHeader++].value = " no-cache" ;
707
- rep.headers [iHeader].name = " Pragma" ;
708
- rep.headers [iHeader++].value = " no-cache" ;
709
- rep.headers [iHeader].name = " Access-Control-Allow-Origin" ;
710
- rep.headers [iHeader++].value = " *" ;
693
+ reply::AddHeader (&rep, " Content-Length" , boost::lexical_cast<std::string>(rep.content .size ()));
694
+ reply::AddHeader (&rep, " Content-Type" , strMimeType + " ;charset=UTF-8" );
695
+ reply::AddHeader (&rep, " Cache-Control" , " no-cache" );
696
+ reply::AddHeader (&rep, " Pragma" , " no-cache" );
697
+ reply::AddHeader (&rep, " Access-Control-Allow-Origin" , " *" );
711
698
if (req.keep_alive ) {
712
- rep.headers [iHeader].name = " Connection" ;
713
- rep.headers [iHeader++].value = " Keep-Alive" ;
714
- rep.headers [iHeader].name = " Keep-Alive" ;
715
- rep.headers [iHeader++].value = " max=20, timeout=10" ;
699
+ reply::AddHeader (&rep, " Connection" , " Keep-Alive" );
700
+ reply::AddHeader (&rep, " Keep-Alive" , " max=20,l timeout=10" );
716
701
}
717
702
if (session.outputfilename != " " )
718
703
{
719
- rep.headers [iHeader].name = " Content-Disposition" ;
720
- rep.headers [iHeader++].value = " attachment; filename=" + session.outputfilename ;
704
+ reply::AddHeader (&rep, " Content-Disposition" , " attachment; filename=" + session.outputfilename );
721
705
}
722
706
}
723
707
else
724
708
{
725
- rep.headers .resize (3 + extraheaders);
726
- rep.headers [iHeader].name = " Content-Length" ;
727
- rep.headers [iHeader++].value = boost::lexical_cast<std::string>(rep.content .size ());
728
- rep.headers [iHeader].name = " Content-Type" ;
729
- rep.headers [iHeader++].value = strMimeType;
730
- rep.headers [iHeader].name = " Cache-Control" ;
731
- rep.headers [iHeader++].value = " max-age=3600, public" ;
709
+ reply::AddHeader (&rep, " Content-Length" , boost::lexical_cast<std::string>(rep.content .size ()));
710
+ reply::AddHeader (&rep, " Content-Type" , strMimeType);
711
+ reply::AddHeader (&rep, " Cache-Control" , " max-age=3600, public" );
732
712
if (req.keep_alive ) {
733
- rep.headers [iHeader].name = " Connection" ;
734
- rep.headers [iHeader++].value = " Keep-Alive" ;
735
- rep.headers [iHeader].name = " Keep-Alive" ;
736
- rep.headers [iHeader++].value = " max=20, timeout=10" ;
713
+ reply::AddHeader (&rep, " Connection" , " Keep-Alive" );
714
+ reply::AddHeader (&rep, " Keep-Alive" , " max=20,l timeout=10" );
737
715
}
738
716
if (session.outputfilename != " " )
739
717
{
740
- rep.headers [iHeader].name = " Content-Disposition" ;
741
- rep.headers [iHeader++].value = " attachment; filename=" + session.outputfilename ;
718
+ reply::AddHeader (&rep, " Content-Disposition" , " attachment; filename=" + session.outputfilename );
742
719
}
743
720
}
744
721
return true ;
@@ -760,32 +737,20 @@ bool cWebem::CheckForPageOverride(WebEmSession & session, request& req, reply& r
760
737
}
761
738
cUTF utf ( wret.c_str () );
762
739
763
- int extraheaders = 0 ;
764
- if (req.keep_alive ) {
765
- extraheaders += 2 ;
766
- }
767
-
768
740
rep.status = reply::ok;
769
741
rep.content .append (utf.get8 (), strlen (utf.get8 ()));
770
- rep.headers .resize (5 + extraheaders);
771
-
772
- int iHeader = 0 ;
773
- rep.headers [iHeader].name = " Content-Length" ;
774
- rep.headers [iHeader++].value = boost::lexical_cast<std::string>(rep.content .size ());
775
- rep.headers [iHeader].name = " Content-Type" ;
776
- rep.headers [iHeader].value = mime_types::extension_to_type (extension);
777
- rep.headers [iHeader++].value += " ;charset=UTF-8" ;
778
- rep.headers [iHeader].name = " Cache-Control" ;
779
- rep.headers [iHeader++].value = " no-cache" ;
780
- rep.headers [iHeader].name = " Pragma" ;
781
- rep.headers [iHeader++].value = " no-cache" ;
782
- rep.headers [iHeader].name = " Access-Control-Allow-Origin" ;
783
- rep.headers [iHeader++].value = " *" ;
742
+
743
+ reply::AddHeader (&rep, " Connection" , " Keep-Alive" );
744
+
745
+ reply::AddHeader (&rep, " Content-Length" , boost::lexical_cast<std::string>(rep.content .size ()));
746
+ reply::AddHeader (&rep, " Content-Type" , mime_types::extension_to_type (extension) + " ; charset=UTF-8" );
747
+ reply::AddHeader (&rep, " Cache-Control" , " no-cache" );
748
+ reply::AddHeader (&rep, " Pragma" , " no-cache" );
749
+ reply::AddHeader (&rep, " Access-Control-Allow-Origin" , " *" );
750
+
784
751
if (req.keep_alive ) {
785
- rep.headers [iHeader].name = " Connection" ;
786
- rep.headers [iHeader++].value = " Keep-Alive" ;
787
- rep.headers [iHeader].name = " Keep-Alive" ;
788
- rep.headers [iHeader++].value = " max=20, timeout=10" ;
752
+ reply::AddHeader (&rep, " Connection" , " Keep-Alive" );
753
+ reply::AddHeader (&rep, " Keep-Alive" , " max=20,l timeout=10" );
789
754
}
790
755
return true ;
791
756
}
@@ -1150,13 +1115,10 @@ char *make_web_time(const time_t rawtime)
1150
1115
1151
1116
void cWebemRequestHandler::send_remove_cookie (reply& rep)
1152
1117
{
1153
- size_t ahsize = rep.headers .size ();
1154
- rep.headers .resize (ahsize + 1 );
1155
- rep.headers [ahsize].name = " Set-Cookie" ;
1156
1118
std::stringstream sstr;
1157
1119
sstr << " SID=none" ;
1158
1120
sstr << " ; path=/; Expires=" << make_web_time (0 );
1159
- rep. headers [ahsize]. value = sstr.str ();
1121
+ reply::AddHeader (& rep, " Set-Cookie " , sstr.str (), false );
1160
1122
}
1161
1123
1162
1124
std::string cWebemRequestHandler::generateSessionID ()
@@ -1212,30 +1174,22 @@ std::string cWebemRequestHandler::generateAuthToken(const WebEmSession & session
1212
1174
1213
1175
void cWebemRequestHandler::send_cookie (reply& rep, const WebEmSession & session)
1214
1176
{
1215
- int ahsize = rep.headers .size ();
1216
- rep.headers .resize (ahsize + 1 );
1217
- rep.headers [ahsize].name = " Set-Cookie" ;
1218
1177
std::stringstream sstr;
1219
1178
sstr << " SID=" << session.id << " _" << session.auth_token << " ." << session.expires ;
1220
1179
sstr << " ; path=/; Expires=" << make_web_time (session.expires );
1221
- rep. headers [ahsize]. value = sstr.str ();
1180
+ reply::AddHeader (& rep, " Set-Cookie " , sstr.str (), false );
1222
1181
}
1223
1182
1224
1183
void cWebemRequestHandler::send_authorization_request (reply& rep)
1225
1184
{
1226
1185
rep.status = reply::unauthorized;
1227
- size_t ahsize = rep.headers .size ();
1228
- rep.headers .resize (ahsize+2 );
1229
- rep.headers [ahsize].name = " Content-Length" ;
1230
- rep.headers [ahsize].value = boost::lexical_cast<std::string>(rep.content .size ());
1231
- rep.headers [ahsize+1 ].name = " WWW-Authenticate" ;
1232
-
1186
+ reply::AddHeader (&rep, " Content-Length" , boost::lexical_cast<std::string>(rep.content .size ()));
1233
1187
char szAuthHeader[200 ];
1234
1188
sprintf (szAuthHeader,
1235
1189
" Basic "
1236
1190
" realm=\" %s\" " ,
1237
1191
myWebem->m_DigistRealm .c_str ());
1238
- rep. headers [ahsize+ 1 ]. value = szAuthHeader;
1192
+ reply::AddHeader (& rep, " WWW-Authenticate " , szAuthHeader) ;
1239
1193
}
1240
1194
1241
1195
bool cWebemRequestHandler::CompressWebOutput (const request& req, reply& rep)
@@ -1271,10 +1225,7 @@ bool cWebemRequestHandler::CompressWebOutput(const request& req, reply& rep)
1271
1225
1272
1226
rep.headers [0 ].value = szSize;
1273
1227
// Add gzip header
1274
- int ohsize=rep.headers .size ();
1275
- rep.headers .resize (ohsize+1 );
1276
- rep.headers [ohsize].name = " Content-Encoding" ;
1277
- rep.headers [ohsize].value = " gzip" ;
1228
+ reply::AddHeader (&rep, " Content-Encoding" , " gzip" );
1278
1229
return true ;
1279
1230
}
1280
1231
}
@@ -1600,6 +1551,7 @@ void cWebemRequestHandler::handle_request(const request& req, reply& rep)
1600
1551
|| rep.headers [1 ].value == " text/plain"
1601
1552
|| rep.headers [1 ].value == " text/css"
1602
1553
|| rep.headers [1 ].value == " text/javascript"
1554
+ || rep.headers [1 ].value == " application/javascript"
1603
1555
)
1604
1556
{
1605
1557
// check if content is not gzipped, include won´t work with non-text content
@@ -1623,14 +1575,8 @@ void cWebemRequestHandler::handle_request(const request& req, reply& rep)
1623
1575
else if (rep.headers [1 ].value .find (" image/" )!=std::string::npos)
1624
1576
{
1625
1577
// Cache images
1626
- int theaders = rep.headers .size ();
1627
- rep.headers .resize (theaders + 2 );
1628
-
1629
- rep.headers [theaders].name = " Date" ;
1630
- rep.headers [theaders].value = strftime_t (" %a, %d %b %Y %H:%M:%S GMT" ,mytime (NULL ));
1631
-
1632
- rep.headers [theaders + 1 ].name = " Expires" ;
1633
- rep.headers [theaders + 1 ].value = " Sat, 26 Dec 2099 11:40:31 GMT" ;
1578
+ reply::AddHeader (&rep, " Date" , strftime_t (" %a, %d %b %Y %H:%M:%S GMT" , mytime (NULL )));
1579
+ reply::AddHeader (&rep, " Expires" , " Sat, 26 Dec 2099 11:40:31 GMT" );
1634
1580
}
1635
1581
}
1636
1582
else
0 commit comments