240 Commits

Author SHA1 Message Date
Deomid Ryabkov
e89be2e944 Add mg_url_encode_opt()
CL: Add `mg_url_encode_opt()` - a parametrized version of `mg_url_encode()`

PUBLISHED_FROM=17fa57a7a5325b51b6e3aef3855eac4e82c35782
2018-04-10 11:04:31 +00:00
Deomid Ryabkov
c2fbff6d0e Fix mg_http_parse_header
Per standard, cookies are delimited by `; `.

CL: Fix mg_http_parse_header: treat ";" as a delimiter.

PUBLISHED_FROM=039243c30f5fabf4a4700a43506f841b3268306a
2018-04-10 10:19:36 +00:00
Deomid Ryabkov
3e33e57707 Mongoose net_if and ssl_if refactoring
A major cleanup, disentangling net_if and ssl_if.
Pulled a lot of common logic into the core and reduced size of net_if implementations.

CL: Mongoose net_if and ssl_if refactoring

PUBLISHED_FROM=29bd4dcb264a1fd96b3dd164e2d880e1c2c0921e
2018-03-30 23:19:49 +00:00
Serge A. Zaitsev
d16dbc197f mongoose: fix http pipeline
mongoose: fix formatting

mongoose: fix formatting

mongoose: remove debugging messages

PUBLISHED_FROM=1194e018001cc5f2b598096593d7aac4ec8dc04d
2018-03-20 16:41:56 +00:00
Serge A. Zaitsev
127f27e375 mongoose: unit test for http get pipeline
PUBLISHED_FROM=00e8634913232eb2e50a0d739f85e81706dbc400
2018-03-17 16:35:04 +00:00
Deomid Ryabkov
a3c4a48ef7 Make sure test assertions are evaluated once
E.g. if `ASSERT_EQ(myfunc(), 123)` fails, `myfunc()` would be invoked again to print the actual value.
This can cause confusion sometimes.
To avoid this, we cast arguments to double, which is wide enough for most cases and we provide a variant for 64 bit value types for when it's not.
We also perform a check and fail if argument to the check results in loss of precision.

CL: none

PUBLISHED_FROM=a14551289d92e8a5dead21d16471ebddebe938a8
2018-02-10 12:19:40 +00:00
Dmitry Frank
b9b20c6494 Implement mg_http_parse_header2()
Which is a replacement of (deprecated) `mg_http_parse_header`, but,
similarly to `asprintf`, allocates a new buffer if the client-provided
one is not large enough.

Also use it throughout mongoose code, and thus some header-related
limitations are removed; in particular,
https://github.com/cesanta/mongoose/issues/813 is fixed.

CL: Mongoose Web Server: Deprecate `mg_http_parse_header()` and implement `mg_http_parse_header2()` instead, which allocates a new buffer if the client-provided one is not large enough (similarly to `asprintf`).
CL: Mongoose Web Server: Fix limitations of header value lengths, e.g. when parsing authentication headers such as nonce, etc.

PUBLISHED_FROM=c75b1bbbbdb294ea85075ce69b1368f115fdd1ef
2018-02-07 23:04:29 +00:00
Deomid Ryabkov
50ecc30b4d Commonize unit test main()
CL: none

PUBLISHED_FROM=ee76407d89f3fcbe3da23810117a374d06af0a25
2018-02-07 16:19:32 +00:00
Dmitry Frank
7bf5144e62 Make tests work on public repo as well
PUBLISHED_FROM=78acb18d597b6f47f31da13087fa6685f21ce445
2018-02-05 14:35:37 +00:00
Dmitry Frank
aba60dadec Add mg_ prefix to mongoose sources
CL: none

PUBLISHED_FROM=d6ebe5fa88c61ae3b8569897d9b09d54610bec73
2018-02-03 01:20:47 +02:00
Dmitry Frank
f29457e967 Remove tunneling from mongoose
CL: Mongoose Web Server: Remove tunneling functionality which was used by nobody

PUBLISHED_FROM=38b9e8ae7b0a5a1dbba5cff4074843dc681267d3
2018-02-02 21:50:13 +00:00
Dmitry Frank
8742fac5d8 Publish mongoose src and tests
CL: Mongoose Web Server: Publish sources and tests

Resolves https://github.com/cesanta/mongoose/issues/745

PUBLISHED_FROM=7ecd7a3c518cfa614a6ba0838678dcb91b75a8c0
2018-02-02 15:49:55 +00:00
Marko Mikulicic
8927c9d22b Merge dev branch code named Fossa as next stable Mongoose 2015-09-08 14:34:30 +02:00
Sergey Lyubka
14d6f71f82 Fix unit test 2015-05-20 10:50:32 +01:00
Sergey Lyubka
bf7a115bf2 Fix url rewrites 2015-05-11 09:13:46 +01:00
Sergey Lyubka
2d1d2e6534 SIZE_MAX is not defined on MSVC6, use (size_t) ~0 2015-03-17 17:00:59 +00:00
Dinis Rosário
3bd79c7cd5 Fix remove_double_dots_and_double_slashes removing all the dots leading http server to serve wrong URI
If the uri is something like '/js/...jquery.js', remove_double_dots_and_double_slashes will remove the 3 dots and the http server will serves the /js/jquery.js file.
remove_double_dots_and_double_slashes should check if a dot or double dots is followed by a slash (or backslash) and only remove this to avoid disclosure attack.
2015-03-17 16:04:59 +01:00
Sergey Lyubka
c52e0744cb Squashed warnings after size_t change 2015-03-17 13:18:15 +00:00
Sergey Lyubka
e4ad3010be Fix #416 2014-12-30 03:56:29 +00:00
Sergey Lyubka
710b888122 Added -pthread to test/Makefile::CFLAGS 2014-10-17 20:12:29 +01:00
Sergey Lyubka
80db048578 Added more dependencies in test/Makefile 2014-09-15 01:28:03 +01:00
Sergey Lyubka
fac0e9b0ac Moved unit test to dedicated dir 2014-09-09 18:23:48 +01:00
Sergey Lyubka
5a3b1123f6 tests moved under build 2013-12-07 17:47:14 +00:00
Sergey Lyubka
af7efd980c Adjusting unit test for core 2013-12-06 22:14:55 +00:00
Sergey Lyubka
ebf9ee089b Do not send 500 when timing out getreq() 2013-12-05 11:12:07 +00:00
Sergey Lyubka
37751a2875 directory ops moved to directory.c 2013-11-23 10:24:25 +00:00
Sergey Lyubka
5153eebc9b mg_read() does not block on content_len=0. mg_read() reads until socket is closed if content-length is not provided 2013-10-01 17:47:32 +01:00
Sergey Lyubka
70154f6c23 Moved mod_lua.c to src/lua.c 2013-10-01 15:16:09 +01:00
Sergey Lyubka
ecbf79135f Refactored API, returned back to event-based handlers. Upload and Websocket API simplified 2013-09-28 11:00:54 +01:00
Sergey Lyubka
98214ce1a4 Removed init_lua() and open_file() callbacks 2013-09-26 09:35:07 +01:00
Sergey Lyubka
46e04e857c Added test for dir with non-ascii char 2013-09-24 10:08:39 +01:00
Sergey Lyubka
e556a487e0 Fix for the SCRIPT_NAME in the presence of PATH_INFO, https://code.google.com/p/mongoose/issues/detail?id=403 2013-09-07 18:49:24 +01:00
Sergey Lyubka
b461edabd9 Squashed warnings 2013-09-07 18:46:50 +01:00
Sergey Lyubka
18e64397fc Fixed tests 2013-09-07 07:07:18 +01:00
Sergey Lyubka
d8596fae27 Fixed unit test 2013-08-19 19:10:17 +01:00
Sergey Lyubka
2055d41a9f Corrected misplaced brackets in parse_http_message() 2013-08-14 10:55:36 +01:00
Sergey Lyubka
743f48b8e0 Added mg_exec_lua_script, mg_prepare_lua_environment -> prepare_lua_environment 2013-08-08 13:11:05 +01:00
Sergey Lyubka
e53d05637a Binding to IPv6 addresses 2013-07-28 12:15:16 +01:00
Sergey Lyubka
62d66201c9 make match_prefix() case-insensitive 2013-07-25 07:07:25 +01:00
Sergey Lyubka
c80a88a407 Added test for uploading 2 files 2013-07-23 08:17:00 +01:00
Sergey Lyubka
35cb27dbe6 Always use absolute path for document_root. If relative path is used, it is relative to mongoose.exe directory. See https://github.com/valenok/mongoose/issues/181 2013-07-20 14:11:05 +01:00
Sergey Lyubka
e003236a03 Made SSI #include file= relative to the current doc, as per spec 2013-07-19 07:57:47 +01:00
Sergey Lyubka
d864d72470 On windows, enclosing path to CGI script in quotes to allow paths with spaces 2013-07-17 08:24:52 +01:00
Sergey Lyubka
bc40aa5442 fixed strtoll() for win32: using _atoi64 2013-07-14 12:49:24 +01:00
Sergey Lyubka
e7c34c26cb mg_read() with no Content-Length would read until socket is closed 2013-07-01 08:45:07 +01:00
Sergey Lyubka
6e59ad8a0d Fix for prepare_lua_environment 2013-05-19 01:25:10 +01:00
Sergey Lyubka
2e232b3304 Lua functionality change: print renamed to mg.write, read renamed to mg.read. Expanded user manual, fixed example pages. 2013-05-15 17:42:34 +01:00
Sergey Lyubka
e579355b01 url_decode -> mg_url_decode 2013-05-08 11:40:13 +01:00
Sergey Lyubka
4120b9bcc0 mg_get_cookie() signature change 2013-04-11 12:49:41 -07:00
Sergey Lyubka
4505b00733 Removed support for option names 2013-03-05 18:26:10 +00:00
Sergey Lyubka
69cb94f3fb Removed header printing from page.lp 2013-02-27 18:06:35 +00:00
Sergey Lyubka
a58bb71c19 Added Lua section to the user manual 2013-02-27 10:44:59 +00:00
Sergey Lyubka
fbf1ccee45 Fix out-of-bounds acces in url_decode() 2013-02-16 14:31:37 +00:00
Sergey Lyubka
0bd43bcae3 Using mg_strcasestr() instead of strstr() 2013-02-16 14:17:38 +00:00
Sergey Lyubka
b809665cad Squashed warning 2013-02-16 12:54:16 +00:00
Sergey Lyubka
9baf2d4ba4 Using keep alive in unit test 2013-02-08 08:19:01 +00:00
Sergey Lyubka
cde25a8b82 Removed embedded test 2013-02-03 19:56:24 +00:00
Sergey Lyubka
1b7f036199 Removed embedded test 2013-02-03 19:56:16 +00:00
Sergey Lyubka
b80157b7ea Setting user data pointer properly 2013-02-03 19:15:27 +00:00
Sergey Lyubka
ee55d38b55 API CHANGE: using struct mg_callbacks 2013-02-01 16:48:30 +00:00
Sergey Lyubka
d73aa1ad09 Added skeleton for regex checks 2013-01-31 18:06:05 +00:00
Sergey Lyubka
d5bc58c38d Using sqlite as an example 2013-01-31 15:17:40 +00:00
Sergey Lyubka
7ed94d1918 Unit test call fixed 2013-01-27 20:49:30 +00:00
Sergey Lyubka
ec7d0b1abd Added test_mg_upload() 2013-01-25 20:27:08 +00:00
Sergey Lyubka
75d9a6c844 Removed mg_connect() and mg_fetch(). Added mg_download() 2013-01-23 21:54:27 +00:00
Sergey Lyubka
4b29689a42 Binding to 127.0.0.1 to prevent popup windows on mac 2013-01-22 12:26:56 +00:00
Sergey Lyubka
9c4853471c Added stub for test_mg_upload() 2013-01-22 09:08:00 +00:00
Sergey Lyubka
bec6ea00ea Using unit test targets 2013-01-22 08:59:42 +00:00
Sergey Lyubka
83fae879bf Binding to 127.0.0.1 to prevent annoying popups on mac 2013-01-21 22:29:31 +00:00
Sergey Lyubka
dbb8a5bbf4 put_delete_passwords_file -> put_delete_auth_file 2013-01-18 09:45:36 +00:00
Sergey Lyubka
05fa677382 Fixed unit test to accomodate mg_get_var() API change 2012-12-24 10:43:15 +00:00
Sergey Lyubka
1ef31461bc Added test_skip_quoted() 2012-12-07 01:50:12 +00:00
Sergey Lyubka
080cb2dd4b Changed signature of url_decode(): signalling on destination buffer overflow. mg_get_var() now does not require extra space for variable buffer 2012-11-14 09:26:02 -08:00
Sergey Lyubka
e251375c0c Using .lp extension for Lua server pages 2012-10-23 20:21:24 +01:00
Sergey Lyubka
038f8823f1 Added test to mg_stat(). Fixed set_gpass() 2012-10-05 08:58:13 +01:00
Sergey Lyubka
b597da34da Pass user_data to the callback 2012-10-05 02:10:35 +01:00
Sergey Lyubka
557d1f4c49 Added MG_OPEN_FILE message 2012-09-29 18:56:41 +01:00
Sergey Lyubka
2539a473fe Added test for byte range past EOF 2012-09-29 18:56:23 +01:00
Sergey Lyubka
3ffdf5459a API change: folded user_data into request_info, and introduced event-specific ev_data 2012-09-27 22:20:02 +01:00
Sergey Lyubka
8c1866a4af Lua server pages support 2012-09-26 23:37:03 +01:00
Sergey Lyubka
dfc0f00478 Implement -T option, throttling functionality 2012-09-23 13:28:27 +01:00
Sergey Lyubka
771ce9059c added 2012-09-22 13:31:10 +01:00
Sergey Lyubka
ff0c2d3f91 Added unit test for mg_get_var 2012-09-22 12:22:30 +01:00
Sergey Lyubka
167338f216 Using slash, "/" as the universal directory separator throughout the code 2012-09-20 18:20:41 +01:00
Sergey Lyubka
98fb44f836 Refactored data buffering. Updated websocket example to have 2 message roundtrips. 2012-09-20 13:45:35 +01:00
Sergey Lyubka
f9873eb87a Experimentl websocket support 2012-09-19 12:23:54 +01:00
Sergey Lyubka
05b2a04267 moved status_code, user_data, log_message out of struct mg_request_info 2012-09-17 19:38:19 +01:00
test
66e088d843 Removed the test for a directory name with only a backslash, because this causes problems on windows. 2012-08-27 14:40:32 +02:00
test
83dc425e25 Removed the test for a directory name with only a backslash, because this causes problems on windows. 2012-08-23 16:36:41 +02:00
Sergey Lyubka
ee8111e424 Unbreak backslash dir test 2012-08-19 12:06:35 +01:00
Ger Hobbelt
ccf43fe3e3 backport of the relevant fix as per http://code.google.com/p/mongoose/issues/detail?id=370#c5 2012-08-18 21:44:29 +02:00
Sergey Lyubka
6619f2edac Implemented -x option 2012-08-14 16:06:10 +01:00
Sergey Lyubka
0e0091e1c0 Changing API: callback doesnt get mg_request_info pointer anymore, but it is possible to get it using mg_get_request_info() 2012-08-03 11:15:38 +01:00
Sergey Lyubka
df7da95cb6 Setting Host header in mg_fetch. Added test for fetching large file. 2012-07-29 17:12:44 +01:00
Sergey Lyubka
a9bb7d78ab Fixed mg_fetch() by passing a buffer, placeholder for the reply headers 2012-07-29 10:15:37 +01:00
Sergey Lyubka
84e26ccddd More tests for mg_fetch() 2012-07-29 08:33:00 +01:00
Sergey Lyubka
6c54370aa1 Added mg_connect(), mg_fetch() API functions. More tests added 2012-07-28 11:04:03 +01:00
Sergey Lyubka
da75a62a32 More tests 2012-07-27 06:24:11 +01:00
Sergey Lyubka
7d5eb279a7 Added unit test 2012-06-07 21:57:40 +01:00
Sergey Lyubka
2e3e1ba7cd Uncommented unit test in test_should_keep_alive() 2012-06-06 06:48:03 +01:00
Sergey Lyubka
9771d184f2 Squashed -DNO_SSL build warning 2012-06-06 06:45:23 +01:00
Sergey Lyubka
5071978267 Corrected should_keep_alive() per bel2s suggestions 2012-06-04 22:49:16 +01:00
Sergey Lyubka
4c5fee9673 Protect from DoS with negative Content-Length 2012-05-19 07:38:50 +01:00
Sergey Lyubka
82bcf523f3 added 2012-05-05 17:32:54 +01:00
Sergey Lyubka
07e76e4918 Fixing #327 2012-03-23 19:37:32 +00:00
Sergey Lyubka
fbe059acaa test case for CGI status text 2012-03-04 16:23:46 +00:00
Sergey Lyubka
d1806370bd few more tests for match_prefix() 2012-03-04 14:45:01 +00:00
Sergey Lyubka
fa22388529 PATH_INFO support 2012-02-20 18:42:43 +00:00
Sergey Lyubka
9d3af98a5e Remove repeating backslashes only on Windows 2012-02-09 22:55:24 +00:00
Sergey Lyubka
8b65d40fad Added test for relative path to the CGI interpreter 2012-01-29 19:21:43 +00:00
Sergey Lyubka
d4eecd5070 Renamed test_all_build_flags.pl to all_build_flags.pl 2012-01-29 18:55:25 +00:00
Sergey Lyubka
afd413c3ad Renamed test_all_build_flags.pl to all_build_flags.pl 2012-01-29 18:55:07 +00:00
valenok
8ea40bae4b Introduced $ meta character in glob expressions 2012-01-26 03:21:51 +00:00
valenok
ed70793670 Options ssi_extensions, cgi_extensions became cgi_pattern, ssi_pattern 2012-01-24 09:30:01 +00:00
valenok
01c5ee0973 Added -w option 2012-01-23 22:03:36 +00:00
Sergey Lyubka
aa90972a31 Set code 302 automatically if CGI reply has Location: header present 2011-11-06 11:24:23 +01:00
Sergey Lyubka
8601b03ead Do not set Connection: keep-alive unless -enable_keep_alive is set 2011-11-06 10:04:55 +01:00
Sergey Lyubka
862df691ce Adjusted flags 2011-08-26 12:35:08 +01:00
Sergey Lyubka
025b11b176 Fixed buffer overflow in put_dir() 2011-08-03 11:39:55 +02:00
valenok
5cf7e899c4 Allow config file to be specified as the first command line argument. Allow cmd line options be specified together with the config file. 2011-06-21 22:04:58 +01:00
Arnout Vandecappelle (Essensium/Mind)
08bf149d85 timeout.cgi test sometimes failed.
Using STDOUT->autoflush(1) seems to work better than $|=1 - I don't know
why.

Also made the timeout.cgi test a bit more verbose.
2010-12-07 12:38:11 +01:00
Arnout Vandecappelle (Essensium/Mind)
a9b6eb1809 Fix for issue#209: support spaces, commas, quotes and other weirdness in Authorization header. 2010-12-03 12:48:56 +01:00
Sergey Lyubka
ac09360430 Accept * URI 2010-11-29 18:27:25 +01:00
Sergey Lyubka
9bda69f573 Fix issue 180 - make mg_read() handle PUT requests, too. Stop checking for request method in mg_read(). 2010-11-29 17:56:26 +01:00
Arnout Vandecappelle (Essensium/Mind)
fb9493a090 Bugfix of Issue #180: mg_read() should accept PUT requests. 2010-11-29 16:27:30 +01:00
Sergey Lyubka
1de7fef760 fix blocked CGI read 2010-11-15 10:41:17 +01:00
valenok
d44f4e4abb import 2010-11-13 16:47:25 +00:00
valenok
3cd16d7266 test for immediate CGI output forward 2010-11-12 21:15:30 +00:00
Arnout Vandecappelle (Essensium/Mind)
de934641be Test for Issue#200: Multiple calls to mg_read always return same data. 2010-11-02 11:13:54 +01:00
valenok
11951a57ff API change: added void *user_data to mg_start(). Bumped version to 3.0 2010-10-26 23:37:44 +01:00
valenok
1811240587 exporting correct SCRIPT_FILENAME for CGI 2010-09-19 13:00:49 +01:00
valenok
647719861b honoring command line flags when using config file, command line flags take preference 2010-09-14 11:17:09 +01:00
valenok
06418fa4e6 added -access_control_list option to cmdline 2010-09-07 00:36:53 +01:00
Sergey Lyubka
75b6717d8b wrapped set_ssl_option call into NO_SSL conditional. Fixed test. 2010-08-31 11:58:45 +02:00
valenok
f105b74dc0 experimental keep-alive, options defaults 2010-08-31 08:01:14 +01:00
valenok
fed9ffc150 struct mg_request_info * -> const struct mg_request_info * 2010-08-31 07:49:55 +01:00
valenok
546bec333c API change for mg_start: most binary compatible across releases. 2010-08-29 22:30:49 +01:00
valenok
8d79e5b43f removed Testing test prefix in messages 2010-08-23 07:26:33 +01:00
Sergey Lyubka
5425b94f39 introduced struct mg_config. Fixed Range response. 2010-06-25 17:23:17 +02:00
Sergey Lyubka
a69a2da39d Initial import - converting from Subversion. 2010-05-03 21:46:42 +01:00