Commit Graph

87 Commits

Author SHA1 Message Date
9a41c959ca fix: Resolve memory leak in stanza_parse by freeing parse state 2025-12-24 15:34:26 +03:00
00f47a1598 fix: Fix XMPP stream parsing and add stbbr_for_presence_to helper (#1)
This PR fixes critical issues with XMPP stream parsing and adds a new helper function for MUC testing.

## Changes

### 1. Fix XMPP stream parsing for multiple stanzas
The XML parser was not correctly handling multiple consecutive stanzas in the stream. Fixed depth tracking to properly detect stanza boundaries.

### 2. Fix XMPP stream parsing depth tracking
Added proper depth tracking for nested XML elements to correctly identify when a complete stanza has been received.

### 3. Remove debug logging that interfered with expect tests
Removed verbose debug output that was causing expect-based functional tests to fail due to unexpected output in the stream.

### 4. Add `stbbr_for_presence_to` for MUC join presence matching
New helper function that registers a canned response for presence stanzas based on the `to` attribute. This is essential for testing MUC (Multi-User Chat) join flows where the response must be triggered by presence to a specific room JID.

**API:**
```c
void stbbr_for_presence_to(const char *to, const char *response);

Reviewed-on: jabber.developer2/stabber#1
Co-authored-by: jabber.developer2 <jabber.developer2@jabber.space>
Co-committed-by: jabber.developer2 <jabber.developer2@jabber.space>
2025-12-15 08:45:38 +00:00
Michael Vetter
f33c4b6ba9 Adapt libmicrohttpd types
Profanity Travis CI showed that stabber doesn't build anymore on Debian
Testing, Arch Linux and Fedora.

It appears all these systems have updated to libmicrohttpd 0.9.71
recently.

Earlier versions build fine.

See release announcement: https://lists.gnu.org/archive/html/libmicrohttpd/2020-06/msg00013.html

```
Furthermore, the release introduces an 'enum MHD_Result' instead of
for certain API misuse bugs by providing better types (not everything is
an 'int').  While this does NOT change the binary API, this change
_will_ cause compiler warnings for all legacy code -- until 'int' is
replaced with 'enum MHD_Result'.
```
2020-07-08 12:58:55 +02:00
James Booth
ed75087e44 Minor code style changes 2016-11-08 23:17:59 +00:00
James Booth
3c9df4390c Allow stubbing for bot get and set iq queries 2015-07-22 22:55:00 +01:00
James Booth
1040fb4fe1 Allow wildcards when waiting on stanza id 2015-07-15 00:23:16 +01:00
James Booth
8585c1af63 Added OSX for pthreads api, added curl example script 2015-07-14 23:32:59 +01:00
James Booth
3733390d0f Added verify to http api 2015-06-14 01:39:21 +01:00
James Booth
954d3a2128 Moved logging, added log level paramater to standalone runner 2015-06-08 22:18:48 +01:00
James Booth
ad6728e74b Tidied logging, added debug 2015-06-08 21:26:44 +01:00
James Booth
d25f8c9acb Use log levels 2015-06-07 19:14:12 +01:00
James Booth
5dfe0a5786 Added log levels 2015-06-07 19:03:04 +01:00
James Booth
40a29755a6 Added thread names 2015-06-07 18:49:02 +01:00
James Booth
31506449bd Removed SO_REUSEPORT 2015-06-06 23:16:21 +01:00
James Booth
b1a9f6470b Renamed parse_stanza -> stanza_parse 2015-06-06 23:06:00 +01:00
James Booth
2d83c6f732 Reuse stanza parsing code 2015-06-06 23:03:32 +01:00
James Booth
35babf392f Renamed stanza verification functions 2015-06-06 23:00:05 +01:00
James Booth
98b06b717c Moved stanza_free 2015-06-06 22:56:30 +01:00
James Booth
c521962dd1 Moved stanza_get_query_request 2015-06-06 22:53:33 +01:00
James Booth
7996baa832 Moved stanza_set_id 2015-06-06 22:50:44 +01:00
James Booth
95f594165e Moved stanza_get_id 2015-06-06 22:49:56 +01:00
James Booth
69afdf2cc5 Moved stanza_get_child_ny_name 2015-06-06 22:48:49 +01:00
James Booth
9fc69177da Moved stanza_get_child_by_ns 2015-06-06 22:47:55 +01:00
James Booth
df6556fe14 Moved stanza_add_child 2015-06-06 22:46:56 +01:00
James Booth
4d641963e4 Moved stanza_to_string 2015-06-06 22:44:53 +01:00
James Booth
c1910b052f Removed stanza show functions 2015-06-06 22:42:43 +01:00
James Booth
dab79fabb9 Moved stanza_new function 2015-06-06 22:41:24 +01:00
James Booth
ddd1bf99a4 Moved stanza data structures 2015-06-06 22:37:50 +01:00
James Booth
b7151c5da3 Renamed parser -> stanza 2015-06-06 22:28:10 +01:00
James Booth
6522e94977 Renamed stanza -> stanzas 2015-06-06 22:22:18 +01:00
James Booth
7d097d8a91 Pass state through parser 2015-06-06 22:15:20 +01:00
James Booth
c96e902472 Set kill_recv on stream end 2015-06-06 20:19:58 +01:00
James Booth
5a857fc6c5 Added manual sleep to socket accept and recv 2015-06-06 19:22:39 +01:00
James Booth
7fe6a433b5 Added query priming to HTTP api 2015-06-02 02:01:25 +01:00
James Booth
202c4946a6 Fixed double free 2015-06-02 00:41:35 +01:00
James Booth
fe36df4dbe Allow stubbing based on query xmlns 2015-06-02 00:19:53 +01:00
James Booth
ddb837cdcd Renamed stbbr_for -> stbbr_for_id 2015-06-01 22:02:18 +01:00
James Booth
66077b0194 Fixed legacy auth, uses dynamic ID 2015-06-01 21:34:35 +01:00
James Booth
32db648cfb Added prime for id to http api 2015-06-01 19:50:50 +01:00
James Booth
46d82ef6f7 Added stbbr_op_t to httpapi module 2015-06-01 19:32:55 +01:00
James Booth
6afa417667 Added license 2015-06-01 00:38:11 +01:00
James Booth
b8cedf7e4d Added includes for microhttpd 2015-05-31 23:43:15 +01:00
James Booth
123f23c438 Added http daemon 2015-05-31 23:17:50 +01:00
James Booth
e8ca581eea Added stbbr_wait_for 2015-05-30 22:43:28 +01:00
James Booth
7acf4f84e1 Renamed verification functions 2015-05-27 23:11:45 +01:00
James Booth
bb9b49a8ea Made verifications blocking calls with timeout 2015-05-27 22:41:51 +01:00
James Booth
8907bd0ac9 Added kill_recv 2015-05-27 00:20:38 +01:00
James Booth
5b1efdfeab Added mutex lock to send_queue 2015-05-24 21:58:43 +01:00
James Booth
dda02514df Added stbbr_send 2015-05-24 21:46:26 +01:00
James Booth
dbccbb70a5 Added attribute value wildcard matcher 2015-05-24 20:55:51 +01:00