History: ip_app_http


This page describes all changes made to the ip_app_http package, the HTTP Server, since its release.

Version

4.5 (2020-02-04, 08:45):

  • HTTP requests could not be processed if the request was split into multiple packets. Minimum chunk size is now 1 byte.
  • Bugfix: Connection task is not running continuously in socket mode. Lower priority tasks could not run while connection task was handling a connection.
  • Bugfix: could not establish connection when socket was used without OS and without SO_LINGER support.
  • Typo fixed: HTTP_SOCKET_NO_LINGER was renamed to HTTP_SOCKET_SO_LINGER.

4.4 (2019-03-10, 16:01):

  • Invalid content-length header was sent when content length was zero.
  • HTTP connection was not disconnected properly if the socket interface was used.

4.3 (2018-12-06, 19:02):

  • Allow PUT requests with zero content-length

4.2 (2018-02-20, 12:13):

  • Applied Socket API changes.

4.1 (2017-06-14, 08:00):

  • User defined type is used to store pointers instead of uint32_t.

3.10:

  •  Corrected dynamic variables unsafe char decoding.
  •  Removed URI decoding when receiving message, now user can correctly decode dynamic variables in callback.
  •  Added filling of peer address data, when HTTP server is configured to use socket interface.
  •  Fixed compilation warnings.

3.9:

  •  Modified HTTP server to work with standard socket interface (tested with LwIP).
  •  LwIP found issues:

   - SO_LINGER option is not handled.

   - SO_SNDTIMEO option is handled incorrectly when timeout set to -1 (after setting option cannot send any data).

   - ioctl(FIONREAD) casts argument pointer to uin16_t (it should use uint32_t ).

   - when enabling ERRNO, project misses declaration of variable errno (added in config_std_sockets.c).

   - poll() function is not implemented.

   - LwIP SOCKET implementation do not support IP V6.

  •  Options HTTP_SOCKET_NO_LINGER, HTTP_SOCKET_SO_SNDTIMEO should be disabled when using LwIP and enabled when using HCC sockets.
  •  Corrected accept for secure connection when OS is used (previously user needed to open first the standard connection, then secure).

3.8:

  •  Added HTTPS functionality to the socket interface.
  •  When using secure connections it is recommended to increase IDLE timeout value (HTTP_IDLE_TIMEOUT) because establishing TLS connections is a long process.
  •  Corrected HTTP connection task loop that was infinite (configuration No OS, socket interface enabled). Setting of b_end was replaced by setting event HTTP_CONN_TR_EVENT_FLAG.
  •  Transmit buffer was not cleared during closing of connection
  •  Added closing of opened request/response file to expire state, because they were not closed if connection was dropped by host.
  •  Events in http_conn_task are handled now independently, dependent handling caused that transmit flag could be masked out and no data on other connection was not send.
  •  Removed closing of opened server ports in http_delete(); this was already done in http_stop().
  •  Fixed compilation error for configuration HTTP_USE_SOCKET 1, HTTP_DYNAMIC_LENGTH 0.
  •  Fixed crash when dynamic variables and socket interface was enabled simultaneously

3.7:

  •  Module can be configured to use BSD sockets.

3.6:

  • Updated to work with TCP major version 6.
  • Updated to work with IP base major version 6.

3.5:

  • Updated to work with TCP major version 5.
  • Updated to work with IP base major version 5.

3.4:

  •  When HTTP_DYNAMIC_VARIABLES was enabled, HTTP server could stop working because dynamic variable resources were not correctly released at some state transitions (e.g. heavy load, error conditions, etc.).

3.3:

  • http_stop() closes HTTP server TCP port.

3.2 r3:

  • User demo moved to ip_app_http_demo package.

3.2:

  • Initialization was fixed to avoid possible failure of http_register_cb() after http_init().

3.1:

  • Added support for PUT, POST and DELETE methods.
  • Request/response data access restructured and user callback functions introduced instead of using file system abstraction layer.

2.9:

  • Updated to work with TCP major version 4.

2.8:

  • Required package version checks added.

2.7:

 receive data handling fixed (unprocessed packet could stay in a queue; this could lead to slower performance).

2.6:

 use of variables declared in config_ip_app_http.c corrected.

2.5:

 make use of the modified tcp_get_buf() function.

2.4:

 Dynamic variables reorganized.

2.3:

 Dynamic length reorganized.

2.2:

 HTTP module reorganized for more efficient connection handling.

2.1:

 uninitialized stack variable initialized in process_buffer().

2.0:

 upgraded for the multi interface IP stack.

 changes needed after introduction of new FSAL.

1.1:

 separated dynamic variables and dynamic length handling.

 file could stay open, refreshing a page too quickly.

 unknown size used from FSAL to tell the server to use dynamic length.

1.0:

 Initial release.