summaryrefslogtreecommitdiff
path: root/src/gmrequest.c
AgeCommit message (Collapse)Author
2021-05-25Removed Symbola, replaced with other/new fontsJaakko Keränen
Symbola's license is not permissive enough, so it has been removed. Added "Smol Emoji" with face emoticons and other UI characters for Lagrange. More symbols provided by Noto Sans Symbols and Noto Sans Symbols 2. The fallback fonts are now Iosevka, which has a pretty good coverage (although monospace), and the user's chosen TrueType font (which could still be a local copy of Symbola). Still a work in progress: some characters are missing. IssueID #283
2021-05-07Windows: Fixed use of native path separatorsJaakko Keränen
`GmRequest` should use the correct path separators on Windows in native paths.
2021-05-05Lang: New strings for directory/archive browsingJaakko Keränen
2021-05-02Added a Gempub helperJaakko Keränen
`Gempub` opens and parses a Gempub archive and provides access to the contents in a common way.
2021-04-25GmRequest: Use unique IDs to avoid confusionJaakko Keränen
It is conceivable that a newly created GmRequest gets the same memory location than the one just destroyed. IssueID #148
2021-04-24Gempub cover page; cleanupJaakko Keränen
Use MIME hooks to generate a Gempub cover page with a preloaded cover image. This required applying MIME filtering to "file://" requests as well. Todo: More cleanup, add a gempub.c.
2021-04-23File URLs support directories and ZIP archivesJaakko Keränen
One is now able to view directory and ZIP archive contents using file URLs. Directory contents are shown as a list of links, enabling previewing supported formats. A link to the parent directory is included at the top of the page. ZIP archives behave like directories, except they also recognize "index.gmi" and "index.gemini" files and display them instead of the regular directory index (when viewing a directory inside a ZIP archive). This enables archiving a Gemini capsule and browsing it as a ZIP archive. Added a preference to disable loading of index pages.
2021-03-26GmCerts: Relaxed domain verificationJaakko Keränen
Allow a certificate for a higher-level domain to be verified against any subdomains, i.e., implicitly assume every certificate uses wildcards. CA verification is still done separately, and OpenSSL does that strictly as before.
2021-03-22Lang: Began replacing UI strings with IDsJaakko Keränen
IssueID #192
2021-03-12Added "about:about"Jaakko Keränen
IssueID #200
2021-03-02Server certificates may also be verified by CAsJaakko Keränen
If the CA file/path are configured in preferences, trust CA verification over manual TOFU checks.
2021-02-27GmRequest: Handling early terminationJaakko Keränen
IssueID #181
2021-02-26Don't apply MIME hooks on downloaded filesJaakko Keränen
2021-02-17Added a built-in Atom-to-Gemini feed translatorJaakko Keränen
If no user-configured MIME hooks handle an Atom XML document, it will be translated using a built-in filter hook. Only Atom is supported. IssueID #78
2021-02-02Stripping the URL fragmentJaakko Keränen
Lagrange will retain URL fragments when parsing gemtext, but will strip them when making requests or when a DocumentWidget's URL is set. This allows opening URLs with fragments in an external browser. IssueID #128
2021-01-02Add support for Finger protocolJaakko Keränen
A patch courtesy of John Cowan. IssueID #106
2020-12-24Fixed percent-encoding the query stringJaakko Keränen
Good old mutable vs. non-mutable argument confusion. The encoded return value was ignored (and leaked).
2020-12-17Listing bookmarks by tag and creation timeJaakko Keränen
2020-12-17Added "about:bookmarks"Jaakko Keränen
A simple way to export all or some of your bookmarks.
2020-12-12Added option to show URL paths as encoded or decodedJaakko Keränen
IssueID #73
2020-12-12IDN applies to all network schemesJaakko Keränen
But not "file" or "about".
2020-12-11GmRequest: Punycode for domain namesJaakko Keränen
To support Internationalized Domain Names, we need to encode domain names using Punycode. IssueID #73
2020-12-07Set REQUEST_URL in the MIME hook environmentJaakko Keränen
This time without a race. IssueID #90
2020-12-06MimeHooks: Request URL via environment variableJaakko Keränen
IssueID #90
2020-12-04Windows: Dealing with "file:///" URIsJaakko Keränen
2020-12-02GmRequest: Don't remain locked while running MIME hooksJaakko Keränen
2020-12-02Added MimeHooksJaakko Keränen
This is a very powerful mechanism: translate the contents of any request to something else when the original MIME type matches a configured regexp. The external hook command may still elect not to process the request.
2020-12-01GmRequest: Parsing the headerJaakko Keränen
Use a regexp to parse the received header. This is better for recognizing invalid headers, e.g., gemini://gemini.conman.org/test/torture/0039.
2020-11-26Added "about:blank"Jaakko Keränen
IssueID #61
2020-11-26Feeds: Added "about:feeds"Jaakko Keränen
Show all entries in a CAPCOM-like chronological list.
2020-11-25DocumentWidget: Crash after redirectsJaakko Keränen
2020-11-25GmRequest: Fixed lack of update notificationsJaakko Keränen
2020-11-24Fixed threading issues and data racesJaakko Keränen
The most serious problem was that GmRequest's response body was being accessed while the TlsRequest thread was modifying it. Now the response must always be locked before accessing elsewhere. There were also inefficient data updates in the media players.
2020-11-23GmRequest: Consider a failed request as finishedJaakko Keränen
2020-11-08Manually trusting a server certificateJaakko Keränen
2020-11-08Gopher improvementsJaakko Keränen
Asking for query text with item type 7. Enhanced ASCII art detection.
2020-11-07Added support for GopherJaakko Keränen
Needs more testing. Queries are not supported yet.
2020-11-07GmRequest: Working on Gopher requestsJaakko Keränen
Todo: Move this code to a separate file.
2020-11-07GmRequest: Mechanism for Gopher requestsJaakko Keränen
2020-11-07GmRequest: CleanupJaakko Keränen
2020-11-07GmRequest: Removed timeoutsJaakko Keränen
No automatic timeouts to facilitate long connections. The server can indicate closing of the connection via TLS or by closing the socket.
2020-11-07Treat Gopher as an unsupported protocolJaakko Keränen
2020-11-03GmResponse: Fixed parsing of the responseJaakko Keränen
In some cases an empty <META> in the server response would cause GmResponse to treat the entire header as invalid. Also, TlsRequest was not handling closing of the TLS/SSL connection if the socket still remained open. This caused GmRequest to wait until the timeout before it realized the full response had been received. IssueID #22
2020-10-27Added a network/TLS error pageJaakko Keränen
There is now an error page shown when the TLS request fails for some reason. Error page theming is also updated at the time when the error page is composed.
2020-10-20Added timestamps to serialized responsesJaakko Keränen
A new version of the binary serialization format that includes timestamps for GmResponse.
2020-10-14Use libmpg123 to decode MPEG audioJaakko Keränen
mpg123 is configured as an optional dependency. Works for full files currently.
2020-10-09Support Ogg Vorbis audioJaakko Keränen
Playback starts as soon as possible, so one can listen while streaming. stb_vorbis.c needed a tiny tweak to not die on a file without (Ogg? Vorbis?) comments.
2020-10-04Working on audio playbackJaakko Keränen
Audio players are displayed the same way as images. When playing, a decoder runs in a background thread producing samples suitable for output.
2020-09-22DocumentWidget: Drawing side elementsJaakko Keränen
The banner appears on the left, if there is room in the margin. Also added a document timestamp in the bottom to see when the data was received.
2020-09-17Download progress indicator for large downloadsJaakko Keränen