aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/http
AgeCommit message (Collapse)AuthorFilesLines
5 dayshttp: leave space for msg header on transport methodFlorin Coras1-0/+1
Type: fix Change-Id: I4bcc9c6168c18ccf5701b832c26b16d3bb24bc98 Signed-off-by: Florin Coras <fcoras@cisco.com>
5 dayshttp_static: POST to static files improvementMatus Fabian3-8/+11
Type: improvement Change-Id: I6a6794dee3c9e948227e6c08769d45aa595bfe02 Signed-off-by: Matus Fabian <matfabia@cisco.com>
9 dayshttp: http/2 core skeletonMatus Fabian4-1/+418
Type: feature Change-Id: Ia6581b685c9dbc89e72bdec320b7f52f6f962542 Signed-off-by: Matus Fabian <matfabia@cisco.com>
9 dayshttp: extendable conn/req ctx and multiplexingMatus Fabian4-363/+614
multiplexing support: - set request index as connection_index in application session - do not allocate app session/http req immediately in http_ts_accept_callback but wait for request/stream opening HTTP version specific data in connection and request ctx: - opaque pointer in http_conn_t - req_pool manged entirely by specific version engine Version specific configuration: - added name to http_engine_vft_t - added unformat_cfg_callback (optional) to http_engine_vft_t Type: improvement Change-Id: Ib43f0489337a222a68b0f81d45cb2e64b2c606c0 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-03-10http: http_transport_connect TLS supportMatus Fabian4-16/+94
enable HTTPS for client apps Type: improvement Change-Id: I2ca8b926771a350863cca81729102faf6ee9c874 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-03-10http_static: resize header response buffer if neededSemir Sionek1-6/+24
Type: fix Change-Id: If77469fbdf2b95b0c546a2d1de1cc8663464e1fc Signed-off-by: Semir Sionek <ssionek@cisco.com>
2025-03-03http: http2 framesMatus Fabian5-0/+882
Type: feature Change-Id: Id2c6f6b5747c1f676048642e277eb66850f728b7 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-02-28http: hpack headers encodingMatus Fabian5-90/+394
1) header encoding without dynamic table 2) serialization of response header block Type: feature Change-Id: I7ec470310e5aec0f8055492e92682261b4af5e81 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-02-25http_static: squash subsequent forward slashes in request target pathSemir Sionek2-6/+8
In the file handler, squash groups of forward slashes during path sanitation to minify the risk of running out of memory. Type: fix Change-Id: Ic29d691f876b891ff588157851334162b4e3c5e3 Signed-off-by: Semir Sionek <ssionek@cisco.com>
2025-02-25http: hpack headers decodingMatus Fabian5-23/+989
1) parsing of binary format (RFC7541 section 6) 2) simple dynamic table implementation 3) parsing of request header block Type: feature Change-Id: If43e175a0643f9731c15efc412a82345d9e33cee Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-02-19http: hpack primitive typesMatus Fabian6-0/+1311
RFC7541 section 5, Huffman encoding included Type: feature Change-Id: I5a024f654610729b8f3f53734aa242bb4b5a25fe Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-02-11http: modularization in preparation for h2 and h3Matus Fabian6-2143/+2733
Prepare code to handle multiple http versions and move http/1 specific code into http1.c Type: improvement Change-Id: I1f2c958dadb7721b305c65b2da7c2943695ad740 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-02-05http: confirm postponed connection closeMatus Fabian1-1/+4
Type: fix Change-Id: I43a221ac2be9bbea885116c12d1991cf4477fae8 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-02-03http: buf_fifo_get_segs minor fixMatus Fabian1-1/+1
validate segs vector to (_n_segs - 1) Type: fix Change-Id: I721cc438e4c9610760a1f40b6355834bbd389b20 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-01-31http: http_app_tx_callback check if conn closedMatus Fabian1-0/+7
Type: fix Change-Id: Ic7b9819226742b0f1153ec2794ae80556c49dad2 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-01-29http: conn state consistency with other transportsFlorin Coras1-6/+6
Maintain transport state formatting consistency, i.e., upper case states. If we revisit, we should revisit all transports. Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I143e13aa5e8525bb276db9b4ec0e0baa153d1b44
2025-01-23http: move header serialization to http transportMatus Fabian3-135/+181
Apps called http_serialize_headers, which creates plain text buffer, this is now hidden in http transport layer and apps pass headers in generic form, so they can be encoded based on http version. Type: improvement Change-Id: Ie4fa0516cd3406d60f956751c8ee7ab40e633fa4 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-01-22http: case-insensitive header table searchMatus Fabian3-37/+308
header names are case-insensitive, see RFC9110 section 5.1 Type: improvement Change-Id: Ic5ef5615397537ba48fc56b18c882fa838c54751 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-01-21http: target parsing improvementMatus Fabian4-429/+541
Make it http version neutral, since h2 and h3 use 3 pseudo-headers. Added scheme, target_authority_offset and target_authority_len to http_msg_data_t, target_form removed. Http transport now validate if correct form of request target is received, so now we are also able to receive requests with absolute-form target in server apps like http_static. As bonus, unformat is not longer used to parse IP addresses. Type: improvement Change-Id: I369f77e2639c43cc1244d91f883c526eb88af63e Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-01-16http: fix sending error responses to rejected requests by server appsSemir Sionek1-7/+18
Plugins such as http_static sometimes reject requests without reading all of the body. http_static in that case sends an error response and closes the connection. But the error response cannot go out due to the connection state being HTTP_REQ_STATE_TRANSPORT_IO_MORE_DATA. With this change, we make http_app_tx_callback give a response like that special treatment, allowing it to go out. Type: fix Change-Id: I72ae74b869183f5d5921837f6ac9c52f0efc7598 Signed-off-by: Semir Sionek <ssionek@cisco.com>
2025-01-09hsa: proxying UDP in HTTP/1.1Matus Fabian4-60/+330
Type: feature Change-Id: Ic0ff9b9bfbad9fbc602fbcec0d8906cd21d63a2c Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-12-10http: fix http_free_header_tableMatus Fabian1-1/+0
Type: fix Change-Id: I014aebc84d0c219cc0c99120e9cd51fcc520a41c Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-12-10http: connection upgrade mechanismMatus Fabian3-164/+389
Handle "Connection" and "Upgrade" headers in http transport layer which are used to create a tunnel for some other protocol on the same connection. Type: improvement Change-Id: Icf5479f36fbcc7259b157eaad957211be5ea2aae Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-12-08http: http_decap_udp_payload_datagram fixMatus Fabian2-3/+31
Properly handle incomplete capsule. Type: fix Change-Id: Ied7fca861f02e401451beaff09e612bcf471d8e0 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-11-19http: track requests as independent objectsMatus Fabian2-182/+203
Type: improvement Change-Id: I6c1808a82f61c71f34eab12ae5f99cca5fee8854 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-11-19http: HTTP Datagrams and the Capsule ProtocolMatus Fabian2-0/+265
Type: improvement Change-Id: I45de69172eec54578ceebe87f655701830af1a3d Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-11-14http: state machine improvementMatus Fabian2-233/+232
Split in two, one for rx and second for tx, which is more suitable for http tunnels. Updated state names too, some of them were bit confusing. Type: improvement Change-Id: I2310deaa49196819f9d8147a5d9af188465dbd65 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-11-01http: CONNECT method for tunnellingMatus Fabian2-11/+155
Type: improvement Change-Id: I6af16ddcc6734bb831227ce65cb39e87294fc4cd Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-11-01http: fix invalid listener handle timeout configDave Wallace1-1/+1
- Fixes this assert() in make test-debug testcase: make test-debug TEST=test_http_static.TestHttpStaticVapi.test_http_static_vapi ... vpp[441]: /vpp/src/vppinfra/tw_timer_template.c:301 (tw_timer_start_2t_1w_2048sl) assertion `interval' fails Type: fix Change-Id: Ic6040957f48ab578affa5b1cf7dfdf4be27c4c56 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2024-10-30http: udp proxy uri template parsingMatus Fabian3-27/+162
Parse a URI template that has variables "target_host" and "target_port", where varaibles are at the end of the path: "/{target_host}/{target_port}/". Type: improvement Change-Id: I440b7f4951bffa1fd9971740b9890b221193943b Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-29http: "absolute-form" target URL parsingMatus Fabian4-43/+468
Type: improvement Change-Id: If39680a148d39add40433547369b2ddad3c2e226 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-28http: timeout docsMatus Fabian1-0/+29
Type: docs Change-Id: I3dd9a726b862e72458a8f83c62354411d2c89d07 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-25http: pass timeout using extended configMatus Fabian3-9/+25
App can now pass http connection timeout using extended configuration, ext cfg type TRANSPORT_ENDPT_EXT_CFG_HTTP, value (in seconds) set in ext cfg member opaque. It is optional, default value is 60 seconds. Type: improvement Change-Id: Ibeff4bbd3153421be350ff564ec3c8e52e5b9639 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-25session: support of multiple extended configsMatus Fabian1-2/+6
This allow configuration for each transport protocol when combined, e.g. HTTPS=HTTP+TLS. Extended config of session endpoint config is now chunk of memory, which allow seamless integration with VCL, and internal representation is hidden behind APIs, which is better for future improvements. By default chunk is allocated to 512B if the app doesn't do so before. Type: improvement Change-Id: I323f19ec255eba31c58c06b8b83af45aab7f5bb1 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-14http: Content-Length value parsing improvementMatus Fabian1-18/+62
Type: improvement Change-Id: Ida8ca43b5fed41fc0b13a2dde97e7e35c55283c9 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-14http: timer pool assert crash fixMatus Fabian4-55/+121
Two iterations over expiret timers: 1) ivalidate timer handle and mark the connection as having a pending timer 2) send RPCs to workers Type: fix Change-Id: Iadc031c4e6d6f7bbd851d0421e6e0ea2d2b5e70f Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-14http: track half-open sessionsMatus Fabian2-3/+95
It might happen that app detach during connecting period and worker is not valid anymore when http_ts_connected_callback is called. Type: improvement Change-Id: I95f094e8bc0352728a61e3fe74ab0745859e2457 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-07http_static: fix first and add segment sizeFlorin Coras1-0/+1
Allow segments bigger than 4GB Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I510f7cff75883fdbd6c0c22efff9a14e26c755f4
2024-09-30http: http_state_wait_server_reply fixMatus Fabian1-0/+1
We enqueue 2 segments to app, first is masg (http_msg_t) and second as much as possible of the raw data, so it must be: max_enq - sizeof (msg) Type: fix Change-Id: Ib7ece7e0ad1aac99d687d49149f1bccea599b10f Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-09-13http: update body_len from u32 to u64Aritra Basu3-14/+15
Type: improvement Change-Id: I381541fb180d6d6ba42e4d231d22a73c5d33ef65 Signed-off-by: Aritra Basu <aritrbas@cisco.com>
2024-09-09http: fixed missing static keywordAdrian Villin1-1/+1
Type: improvement Change-Id: Id7a16388a72fc5de5848f3fec7a6dbeb6188f913 Signed-off-by: Adrian Villin <avillin@cisco.com>
2024-09-08http: large POST handlingMatus Fabian2-28/+87
Type: improvement Change-Id: I28b8e8ccbff6f97e669b0048011b187decbfc892 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-08-28http: http_send_data cleanupMatus Fabian1-36/+38
removed unused parameter offset Type: improvement Change-Id: I30cde713731555fb2eb305c303369c1ead4d3783 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-08-28http: http_state_wait_app_reply improvementMatus Fabian1-6/+16
set http status according to whether app also sent the body Type: improvement Change-Id: Ia41603cc21b410ca6929ec3d3e7c4c6808305769 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-08-23http: status line parsing fixMatus Fabian1-9/+25
Request line must only start with method name and server should ignore at least one empty line (CRLF) received prior to the request-line. Type: fix Change-Id: Ifebd992dc4c13df1a3fabfcdef9e7ee644150a21 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-08-19http: make Media Types RFC9110 compliantAdrian Villin1-77/+77
- https://www.rfc-editor.org/rfc/rfc9110.html#name-media-type https://www.iana.org/assignments/media-types/media-types.xhtml Type: improvement Change-Id: I2624dc39a985ff3999aed6e1c833220b7049828d Signed-off-by: Adrian Villin <avillin@cisco.com>
2024-08-16http: http_read_message improvementMatus Fabian2-45/+78
Use svm_fifo_peek in http_read_message and advance rx fifo head by amount of bytes send to app, since not always you won't or can't send all bytes. Type: improvement Change-Id: I84348c9df5c77ba386c9738a754295bb9ea0f7ef Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-08-09http: authority-form target parsing/serializingMatus Fabian3-0/+87
Type: improvement Change-Id: Ifb90818a3526d3d4030a66b1ef7eebedfe97978f Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-08-06http: client POST methodMatus Fabian4-50/+152
Type: improvement Change-Id: Iaa70abcee02866f9a6426a6e8e4709eeba0e8114 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-07-29http: client code improvementMatus Fabian4-119/+469
Client app can sends request target, custom header and body to HTTP layer. In response it receives all bytes as received from transport, aditionally we provide offset and length of headers and body. In addtion client app is now able to receive response with all status codes and Host header field is set in request at protocol layer. Type: improvement Change-Id: I8c8e2c8f99cdf500126b7c2c722aebc254aa0d9f Signed-off-by: Matus Fabian <matfabia@cisco.com>