Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
nghttp2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
nghttp2
Commits
64466601
Commit
64466601
authored
Jul 29, 2015
by
Tatsuhiro Tsujikawa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nghttpx: Make record size timeout more durable to high load situation
parent
d0a37d59
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
16 additions
and
5 deletions
+16
-5
src/shrpx_client_handler.cc
src/shrpx_client_handler.cc
+1
-0
src/shrpx_connection.cc
src/shrpx_connection.cc
+10
-4
src/shrpx_connection.h
src/shrpx_connection.h
+4
-1
src/shrpx_http2_session.cc
src/shrpx_http2_session.cc
+1
-0
No files found.
src/shrpx_client_handler.cc
View file @
64466601
...
...
@@ -247,6 +247,7 @@ int ClientHandler::write_tls() {
return
-
1
;
}
if
(
wb_
.
rleft
()
==
0
)
{
conn_
.
start_tls_write_idle
();
break
;
}
}
...
...
src/shrpx_connection.cc
View file @
64466601
...
...
@@ -61,7 +61,7 @@ Connection::Connection(struct ev_loop *loop, int fd, SSL *ssl,
rt
.
data
=
this
;
// set 0. to double field explicitly just in case
tls
.
last_write_
tim
e
=
0.
;
tls
.
last_write_
idl
e
=
0.
;
if
(
ssl
)
{
set_ssl
(
ssl
);
...
...
@@ -402,7 +402,7 @@ const size_t SHRPX_WARMUP_THRESHOLD = 1 << 20;
size_t
Connection
::
get_tls_write_limit
()
{
auto
t
=
ev_now
(
loop
);
if
(
t
-
tls
.
last_write_tim
e
>
1.
)
{
if
(
t
ls
.
last_write_idle
>=
0.
&&
t
-
tls
.
last_write_idl
e
>
1.
)
{
// Time out, use small record size
tls
.
warmup_writelen
=
0
;
return
SHRPX_SMALL_WRITE_LIMIT
;
...
...
@@ -421,6 +421,12 @@ void Connection::update_tls_warmup_writelen(size_t n) {
}
}
void
Connection
::
start_tls_write_idle
()
{
if
(
tls
.
last_write_idle
<
0.
)
{
tls
.
last_write_idle
=
ev_now
(
loop
);
}
}
ssize_t
Connection
::
write_tls
(
const
void
*
data
,
size_t
len
)
{
// SSL_write requires the same arguments (buf pointer and its
// length) on SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE.
...
...
@@ -439,14 +445,14 @@ ssize_t Connection::write_tls(const void *data, size_t len) {
tls
.
last_writelen
=
0
;
}
tls
.
last_write_idle
=
-
1.
;
auto
rv
=
SSL_write
(
tls
.
ssl
,
data
,
len
);
if
(
rv
==
0
)
{
return
SHRPX_ERR_NETWORK
;
}
tls
.
last_write_time
=
ev_now
(
loop
);
if
(
rv
<
0
)
{
auto
err
=
SSL_get_error
(
tls
.
ssl
,
rv
);
switch
(
err
)
{
...
...
src/shrpx_connection.h
View file @
64466601
...
...
@@ -52,7 +52,7 @@ struct TLSConnection {
SSL
*
ssl
;
SSL_SESSION
*
cached_session
;
MemcachedRequest
*
cached_session_lookup_req
;
ev_tstamp
last_write_
tim
e
;
ev_tstamp
last_write_
idl
e
;
size_t
warmup_writelen
;
// length passed to SSL_write and SSL_read last time. This is
// required since these functions require the exact same parameters
...
...
@@ -100,6 +100,9 @@ struct Connection {
size_t
get_tls_write_limit
();
// Updates the number of bytes written in warm up period.
void
update_tls_warmup_writelen
(
size_t
n
);
// Tells there is no immediate write now. This triggers timer to
// determine fallback to short record size mode.
void
start_tls_write_idle
();
ssize_t
write_clear
(
const
void
*
data
,
size_t
len
);
ssize_t
writev_clear
(
struct
iovec
*
iov
,
int
iovcnt
);
...
...
src/shrpx_http2_session.cc
View file @
64466601
...
...
@@ -1729,6 +1729,7 @@ int Http2Session::write_tls() {
return
-
1
;
}
if
(
wb_
.
rleft
()
==
0
)
{
conn_
.
start_tls_write_idle
();
break
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment