stop O2 override
[platform/upstream/libwebsockets.git] / changelog
1 Changelog
2 ---------
3
4 (development since 1.1....)
5
6 User api additions
7 ------------------
8
9  - lws_get_library_version() returns a const char * with a string like
10          "1.1 9e7f737", representing the library version from configure.ac
11          and the git HEAD hash the library was built from
12
13  - TCP Keepalive can now optionally be applied to all lws sockets, on Linux
14         also with controllable timeout, number of probes and probe interval.
15         (On BSD type OS, you can only use system default settings for the
16         timing and retries, although enabling it is supported by setting
17         ka_time to nonzero, the exact value has no meaning.)
18         This enables detection of idle connections which are logically okay,
19         but are in fact dead, due to network connectivity issues at the server,
20         client, or any intermediary.  By default it's not enabled, but you
21         can enable it by setting a non-zero timeout (in seconds) at the new
22         ka_time member at context creation time.
23
24
25 User api changes
26 ----------------
27
28  - libwebsocket_create_context() has changed from taking a ton of parameters
29         to just taking a pointer to a struct containing the parameters.  The
30         struct lws_context_creation_info is in libwebsockets.h, the members
31         are in the same order as when they were parameters to the call
32         previously.  The test apps are all updated accordingly so you can
33         see example code there.
34
35  - Header tokens are now deleted after the websocket connection is
36         established.  Not just the header data is saved, but the pointer and
37         length array is also removed from (union) scope saving several hundred
38         bytes per connection once it is established
39
40  - struct libwebsocket_protocols has a new member rx_buffer_size, this
41         controls rx buffer size per connection of that protocol now.  Sources
42         for apps built against older versions of the library won't declare
43         this in their protocols, defaulting it to 0.  Zero buffer is legal,
44         it causes a default buffer to be allocated (currently 4096)
45
46         If you want to receive only atomic frames in your user callback, you
47         should set this to greater than your largest frame size.  If a frame
48         comes that exceeds that, no error occurs but the callback happens as
49         soon as the buffer limit is reached, and again if it is reached again
50         or the frame completes.  You can detect that has happened by seeing
51         there is still frame content pending using
52         libwebsockets_remaining_packet_payload()
53
54         By correctly setting this, you can save a lot of memory when your
55         protocol has small frames (see the test server and client sources).
56
57
58 User api removals
59 -----------------
60
61 The configuration-time option MAX_USER_RX_BUFFER has been replaced by a
62 buffer size chosen per-protocol.  For compatibility, there's a default of
63 4096 rx buffer, but user code should set the appropriate size for the
64 protocol frames.
65
66
67 New features
68 ------------
69
70  - Cmake project file added, aimed initially at Windows support: this replaces
71 the visual studio project files that were in the tree until now.
72
73  - PATH_MAX or MAX_PATH no longer needed
74
75  - cutomizable frame rx buffer size by protocol
76
77  - By default debug is enabled and the library is built for -O0 -g to faclitate
78         that.  Use --disable-debug configure option to build instead with -O4
79         and no -g (debug info), obviously providing best performance and
80         reduced binary size.
81
82 v1.1-chrome26-firefox18
83 =======================
84
85 Diffstat
86 --------
87
88  Makefile.am                            |    4 +
89  README-test-server                     |  291 ---
90  README.build                           |  239 ++
91  README.coding                          |  138 ++
92  README.rst                             |   72 -
93  README.test-apps                       |  272 +++
94  configure.ac                           |  116 +-
95  lib/Makefile.am                        |   55 +-
96  lib/base64-decode.c                    |    5 +-
97  lib/client-handshake.c                 |  121 +-
98  lib/client-parser.c                    |  394 ++++
99  lib/client.c                           |  807 +++++++
100  lib/daemonize.c                        |  212 ++
101  lib/extension-deflate-frame.c          |  132 +-
102  lib/extension-deflate-stream.c         |   12 +-
103  lib/extension-x-google-mux.c           | 1223 ----------
104  lib/extension-x-google-mux.h           |   96 -
105  lib/extension.c                        |    8 -
106  lib/getifaddrs.c                       |  271 +++
107  lib/getifaddrs.h                       |   76 +
108  lib/handshake.c                        |  582 +----
109  lib/libwebsockets.c                    | 2493 ++++++---------------
110  lib/libwebsockets.h                    |  115 +-
111  lib/md5.c                              |  217 --
112  lib/minilex.c                          |  440 ++++
113  lib/output.c                           |  628 ++++++
114  lib/parsers.c                          | 2016 +++++------------
115  lib/private-libwebsockets.h            |  284 +--
116  lib/server-handshake.c                 |  275 +++
117  lib/server.c                           |  377 ++++
118  libwebsockets-api-doc.html             |  300 +--
119  m4/ignore-me                           |    2 +
120  test-server/Makefile.am                |  111 +-
121  test-server/libwebsockets.org-logo.png |  Bin 0 -> 7029 bytes
122  test-server/test-client.c              |   45 +-
123  test-server/test-echo.c                |  330 +++
124  test-server/test-fraggle.c             |   20 +-
125  test-server/test-ping.c                |   22 +-
126  test-server/test-server-extpoll.c      |  554 -----
127  test-server/test-server.c              |  349 ++-
128  test-server/test.html                  |    3 +-
129  win32port/zlib/ZLib.vcxproj            |  749 ++++---
130  win32port/zlib/ZLib.vcxproj.filters    |  188 +-
131  win32port/zlib/adler32.c               |  348 ++-
132  win32port/zlib/compress.c              |  160 +-
133  win32port/zlib/crc32.c                 |  867 ++++----
134  win32port/zlib/crc32.h                 |  882 ++++----
135  win32port/zlib/deflate.c               | 3799 +++++++++++++++-----------------
136  win32port/zlib/deflate.h               |  688 +++---
137  win32port/zlib/gzclose.c               |   50 +-
138  win32port/zlib/gzguts.h                |  325 ++-
139  win32port/zlib/gzlib.c                 | 1157 +++++-----
140  win32port/zlib/gzread.c                | 1242 ++++++-----
141  win32port/zlib/gzwrite.c               | 1096 +++++----
142  win32port/zlib/infback.c               | 1272 ++++++-----
143  win32port/zlib/inffast.c               |  680 +++---
144  win32port/zlib/inffast.h               |   22 +-
145  win32port/zlib/inffixed.h              |  188 +-
146  win32port/zlib/inflate.c               | 2976 +++++++++++++------------
147  win32port/zlib/inflate.h               |  244 +-
148  win32port/zlib/inftrees.c              |  636 +++---
149  win32port/zlib/inftrees.h              |  124 +-
150  win32port/zlib/trees.c                 | 2468 +++++++++++----------
151  win32port/zlib/trees.h                 |  256 +--
152  win32port/zlib/uncompr.c               |  118 +-
153  win32port/zlib/zconf.h                 |  934 ++++----
154  win32port/zlib/zlib.h                  | 3357 ++++++++++++++--------------
155  win32port/zlib/zutil.c                 |  642 +++---
156  win32port/zlib/zutil.h                 |  526 ++---
157  69 files changed, 19556 insertions(+), 20145 deletions(-)
158
159 user api changes
160 ----------------
161
162  - libwebsockets_serve_http_file() now takes a context as first argument
163
164  - libwebsockets_get_peer_addresses() now takes a context and wsi as first
165         two arguments
166
167
168 user api additions
169 ------------------
170
171  - lwsl_...() logging apis, default to stderr but retargetable by user code;
172         may be used also by user code
173
174  - lws_set_log_level() set which logging apis are able to emit (defaults to
175         notice, warn, err severities), optionally set the emit callback
176
177  - lwsl_emit_syslog() helper callback emits to syslog
178
179  - lws_daemonize() helper code that forks the app into a headless daemon
180         properly, maintains a lock file with pid in suitable for sysvinit etc to
181         control lifecycle
182
183  - LWS_CALLBACK_HTTP_FILE_COMPLETION callback added since http file
184         transfer is now asynchronous (see test server code)
185
186  - lws_frame_is_binary() from a wsi pointer, let you know if the received
187         data was sent in BINARY mode
188
189
190 user api removals
191 -----------------
192
193  - libwebsockets_fork_service_loop() - no longer supported (had intractable problems)
194         arrange your code to act from the user callback instead from same
195         process context as the service loop
196
197  - libwebsockets_broadcast() - use libwebsocket_callback_on_writable[_all_protocol]()
198         instead from same process context as the service loop.  See the test apps
199         for examples.
200
201  - x-google-mux() removed until someone wants it
202
203  - pre -v13 (ancient) protocol support removed
204
205
206 New features
207 ------------
208
209  - echo test server and client compatible with echo.websocket.org added
210
211  - many new configure options (see README.build) to reduce footprint of the
212         library to what you actually need, eg, --without-client and
213         --without-server
214
215  - http + websocket server can build to as little as 12K .text for ARM
216
217  - no more MAX_CLIENTS limitation; adapts to support the max number of fds
218         allowed to the process by ulimit, defaults to 1024 on Fedora and
219         Ubuntu.  Use ulimit to control this without needing to configure
220         the library.  Code here is smaller and faster.
221
222  - adaptive ratio of listen socket to connection socket service allows
223         good behaviour under Apache ab test load.  Tested with thousands
224         of simultaneous connections
225
226  - reduction in per-connection memory footprint by moving to a union to hold
227         mutually-exclusive state for the connection
228
229  - robustness: Out of Memory taken care of for all allocation code now
230
231  - internal getifaddrs option if your toolchain lacks it (some uclibc)
232
233  - configurable memory limit for deflate operations
234
235  - improvements in SSL code nonblocking operation, possible hang solved,
236         some SSL operations broken down into pollable states so there is
237         no library blocking, timeout coverage for SSL_connect
238
239  - extpoll test server merged into single test server source
240
241  - robustness: library should deal with all recoverable socket conditions
242
243  - rx flowcontrol for backpressure notification fixed and implmeneted
244         correctly in the test server
245
246  - optimal lexical parser added for header processing; all headers in a
247         single 276-byte state table
248
249  - latency tracking api added (configure --with-latency)
250
251  - Improved in-tree documentation, REAME.build, README.coding,
252         README.test-apps, changelog
253
254  - Many small fixes
255
256
257 v1.0-chrome25-firefox17 (6cd1ea9b005933f)