@@ -708,6 +708,7 @@ int build_response(client_t * client, int flags, int status, const void * header
708
708
PyObject * asgi_dict = NULL ;
709
709
int64_t body_size = _body_size ;
710
710
bool resp_date_present = false;
711
+ bool resp_server_present = false;
711
712
712
713
if (flags & RF_HEADERS_WSGI ) {
713
714
response = (StartResponse * )headers ;
@@ -792,8 +793,19 @@ int build_response(client_t * client, int flags, int status, const void * header
792
793
if (strcasecmp (key , "Date" ) == 0 )
793
794
resp_date_present = true;
794
795
796
+ bool is_header_server = false;
797
+ if (key_len == 6 )
798
+ if (strcasecmp (key , "Server" ) == 0 ) {
799
+ is_header_server = true;
800
+ resp_server_present = true;
801
+ }
802
+
795
803
xbuf_add (head , key , key_len );
796
804
xbuf_add (head , ": " , 2 );
805
+ if (is_header_server && g_srv .add_header_server > 0 ) {
806
+ xbuf_add (head , g_srv .header_server , g_srv .add_header_server );
807
+ xbuf_add (head , " " , 1 );
808
+ }
797
809
xbuf_add (head , val , val_len );
798
810
xbuf_add (head , "\r\n" , 2 );
799
811
@@ -807,13 +819,18 @@ int build_response(client_t * client, int flags, int status, const void * header
807
819
xbuf_add_str (head , (const char * )headers );
808
820
}
809
821
810
- if (!resp_date_present ) {
822
+ if (!resp_date_present && g_srv . add_header_date ) {
811
823
char * date_str ;
812
824
int date_len = get_asctime (& date_str );
813
825
xbuf_add (head , "Date: " , 6 );
814
826
xbuf_add (head , date_str , date_len );
815
827
xbuf_add (head , "\r\n" , 2 );
816
828
}
829
+ if (!resp_server_present && g_srv .add_header_server > 0 ) {
830
+ xbuf_add (head , "Server: " , 8 );
831
+ xbuf_add (head , g_srv .header_server , g_srv .add_header_server );
832
+ xbuf_add (head , "\r\n" , 2 );
833
+ }
817
834
818
835
if ((flags & RF_SET_KEEP_ALIVE ) != 0 && client -> srv -> allow_keepalive ) {
819
836
xbuf_add_str (head , "Connection: keep-alive\r\n" );
0 commit comments