}
/* have name but no value and found a colon, start of value */
- else if( hdrname && !hdrdata && ((i+2) < buflen) &&
- (buffer[i] == ':') && (buffer[i+1] == ' ')
+ else if( hdrname && !hdrdata &&
+ ((i+1) < buflen) && (buffer[i] == ':')
) {
buffer[i] = 0;
- hdrdata = &buffer[i+2];
+ hdrdata = &buffer[i+1];
+
+ while ((hdrdata + 1) < (buffer + buflen) && *hdrdata == ' ')
+ hdrdata++;
}
/* have no name and found [A-Za-z], start of name */
#ifdef HAVE_TLS
/* setup client tls context */
if( conf->tls )
- conf->tls_accept(cl);
+ {
+ if( conf->tls_accept(cl) < 1 )
+ {
+ fprintf(stderr,
+ "tls_accept failed, "
+ "connection dropped\n");
+
+ /* close client socket */
+ close(new_fd);
+
+ /* remove from global client list */
+ uh_client_remove(new_fd);
+
+ continue;
+ }
+ }
#endif
/* add client socket to global fdset */