Skip to content

Conversation

@SentryMan
Copy link
Collaborator

@SentryMan SentryMan commented Nov 6, 2025

HTTP3 implementation of jdk.httpserver powered by https://github.com/ptrd/flupke.

part of #46

relies on ptrd/flupke#18 and ptrd/flupke#17

SentryMan and others added 2 commits November 6, 2025 12:22
Co-Authored-By: Mahied Maruf <[email protected]>
Co-Authored-By: Mahied Maruf <[email protected]>
@SentryMan SentryMan added the enhancement New feature or request label Nov 6, 2025
@SentryMan
Copy link
Collaborator Author

@mechite what do you think of this so far

Copy link
Contributor

@mechite mechite left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think "yes". Great simple WebTransport implementation that won't bother
anyone, and HTTP3 done perfectly.

Random thought — do you think we could perhaps bump the source version
down to Java 17? Kwik and Flupke target 11, and the patches don't appear to
have any kind of requirement for newer features, though at the same time I
do see the avaje-jex-parent enforces Java 21 too...

I don't need it at all, but I'm not a fan of throwing the source version up if
it would be like a five-LOC change to potentially get more users / use cases

@SentryMan
Copy link
Collaborator Author

Remember that jex exclusively uses virtual threads so that we can avoid needing to implement any async stuff

@mechite
Copy link
Contributor

mechite commented Nov 8, 2025

exclusively uses virtual threads

right.. didn't know that.
you learn something new every day

mechite added a commit to mechite/avaje-jex that referenced this pull request Nov 8, 2025
Clarify that virtual threads aren't just a default or suggestion,
but a hard requirement.

Related-to: avaje#320 (comment)
Signed-off-by: Mahied Maruf <[email protected]>
@SentryMan
Copy link
Collaborator Author

You can put in a manual override to use a regular executor, but the whole thing was designed with virtual threads in mind

@mechite
Copy link
Contributor

mechite commented Nov 8, 2025

random question... is the .impl package preferred here?

in Avaje projects the pattern I picked up was either — same package,
public interface SomeInterface ... & final ... DSomeInterface ...,
...or with a "subpackage" named .core for implementations

(I don't care — but consistency is gold)

@SentryMan
Copy link
Collaborator Author

SentryMan commented Nov 9, 2025

I think I get it, it was sending the data frames before the ssl frames, so just need a delay before sending data.

EDIT: apparently it was something else

@SentryMan
Copy link
Collaborator Author

after ptrd/flupke#29 is resolved we should be good to go

@SentryMan SentryMan changed the title Start Http3 Flupke Http3 Plugin Nov 25, 2025
@SentryMan SentryMan marked this pull request as ready for review November 28, 2025 00:34
@SentryMan SentryMan self-assigned this Nov 28, 2025
@SentryMan SentryMan added this to the 3.4 milestone Nov 28, 2025
@SentryMan SentryMan enabled auto-merge (squash) November 28, 2025 00:34
@SentryMan SentryMan requested a review from rbygrave November 28, 2025 00:42
@SentryMan
Copy link
Collaborator Author

@rbygrave I'm good with this

The `null` check that just output the message was previously not using
the lock, though I don't think it's a big issue and I'm not sure why
there is a lock in the first place.

I inherited that from Flupke, so it's better safe than sorry, though

I'm pretty sure System.Logger makes those guarantees, but so does even
`System.out`/`System.err`, so it's better to assume that ptrd had his
reasons for locking here

Signed-off-by: Mahied Maruf <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants