Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
M
mongoose
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
mongoose
Commits
d10fb945
Commit
d10fb945
authored
7 years ago
by
Dmitry Frank
Committed by
Cesanta Bot
7 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move the recv limit check to mqtt
PUBLISHED_FROM=028d6f56ec1cc15484c995335f00d087b590faef
parent
88ae2eca
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
14 deletions
+16
-14
mongoose.c
mongoose.c
+16
-14
No files found.
mongoose.c
View file @
d10fb945
...
...
@@ -2767,17 +2767,6 @@ MG_INTERNAL void mg_recv_common(struct mg_connection *nc, void *buf, int len,
MG_FREE
(
buf
);
}
mg_call
(
nc
,
NULL
,
nc
->
user_data
,
MG_EV_RECV
,
&
len
);
/* If the buffer is still full after the user callback, fail */
if
(
nc
->
recv_mbuf_limit
>
0
&&
nc
->
recv_mbuf
.
len
>=
nc
->
recv_mbuf_limit
)
{
char
h1
[
50
],
h2
[
50
];
int
flags
=
MG_SOCK_STRINGIFY_IP
|
MG_SOCK_STRINGIFY_PORT
;
mg_conn_addr_to_str
(
nc
,
h1
,
sizeof
(
h1
),
flags
);
mg_conn_addr_to_str
(
nc
,
h2
,
sizeof
(
h2
),
flags
|
MG_SOCK_STRINGIFY_REMOTE
);
LOG
(
LL_ERROR
,
(
"%p %s <-> %s recv buffer %lu bytes, not drained, closing"
,
nc
,
h1
,
h2
,
(
unsigned
long
)
nc
->
recv_mbuf
.
len
));
nc
->
flags
|=
MG_F_CLOSE_IMMEDIATELY
;
}
}
void
mg_if_recv_tcp_cb
(
struct
mg_connection
*
nc
,
void
*
buf
,
int
len
,
int
own
)
{
...
...
@@ -10470,11 +10459,24 @@ static void mqtt_handler(struct mg_connection *nc, int ev,
while
(
1
)
{
int
len
=
parse_mqtt
(
io
,
&
mm
);
if
(
len
<
0
)
{
if
(
len
==
-
1
)
break
;
/* not fully buffered */
/* Protocol error. */
nc
->
flags
|=
MG_F_CLOSE_IMMEDIATELY
;
if
(
len
==
-
2
)
{
/* Protocol error. */
nc
->
flags
|=
MG_F_CLOSE_IMMEDIATELY
;
}
else
if
(
len
==
-
1
)
{
/* Not fully buffered, let's check if we have a chance to get more
* data later */
if
(
nc
->
recv_mbuf_limit
>
0
&&
nc
->
recv_mbuf
.
len
>=
nc
->
recv_mbuf_limit
)
{
LOG
(
LL_ERROR
,
(
"%p recv buffer (%lu bytes) exceeds the limit "
"%lu bytes, and not drained, closing"
,
nc
,
(
unsigned
long
)
nc
->
recv_mbuf
.
len
,
(
unsigned
long
)
nc
->
recv_mbuf_limit
));
nc
->
flags
|=
MG_F_CLOSE_IMMEDIATELY
;
}
}
break
;
}
nc
->
handler
(
nc
,
MG_MQTT_EVENT_BASE
+
mm
.
cmd
,
&
mm
MG_UD_ARG
(
user_data
));
mbuf_remove
(
io
,
len
);
}
...
...
This diff is collapsed.
Click to expand it.
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