summaryrefslogtreecommitdiff
path: root/src/gmrequest.c
AgeCommit message (Collapse)Author
2022-01-30Release notes broken to smaller pagesJaakko Keränen
2021-12-29iOS: Sharing file content and selected textJaakko Keränen
2021-12-27Reserved characters in URLsJaakko Keränen
Making URL encoding a little less convoluted. Now when sending out a request, the URL is fully encoded except for reserved characters. In the internal representation, non-ASCII characters are in decoded form (i.e., IRI). This means that if the user enters a URL in the input field manually, its non-ASCII characters will be percent encoded as well. However, in this case the user is expected to manually escape all reserved characters because the input field can't tell the difference between what is intended to be a reserved separator and what isn't. For example, a server might expect &-separated fields, and if the user enters such fields manually in the URL field, they shouldn't be converted to %26. When forming a query URL in the input dialog, user-entered text is fully percent-encoded because in that case the input is just a generic text string. IssueID #410
2021-12-25CleanupJaakko Keränen
Warnings about lost precision.
2021-10-31Changed format of resources.lgrJaakko Keränen
Resources are now stored in a ZIP archive, and it comes with an explicit version number. All the old embed/bincat stuff was removed as unnecessary. resources.lgr is also a valid fontpack, for loading the built-in fonts. IssueID #363
2021-10-20Installing individual TTF files; generate fontpack.iniJaakko Keränen
2021-10-11Media refactoring; working on FontPack managementJaakko Keränen
Media still needs more work to get rid of redundancies and make lookups faster. FontPacks are manipulated as Media items (not unlike images) so they can be previewed on page, and installed via a click. FontPack management is not trivial as it includes such details as versioning and whether individual packs are enabled or disabled.
2021-09-14UploadWidget: Identity selection (mobile)Jaakko Keränen
2021-08-01Translations for hardcoded English stringsJaakko Keränen
IssueID #276
2021-07-18UploadWidget: Monitoring progressJaakko Keränen
Socket can now tell us how much data is being sent, so the upload progress can be monitored.
2021-07-17Working on Titan uploadsJaakko Keränen
There may be a bug in `TlsRequest` when sending out large amounts of data.
2021-07-17Working on a UI for uploading text/dataJaakko Keränen
`UploadWidget` allows entering long-form text or dropping a file for uploading. InputWidget isn't yet well suited for really long documents... Some optimizations will be needed.
2021-07-16GmRequest: Support for Titan payloadsJaakko Keränen
2021-07-16Allow override for certificate expiryJaakko Keränen
The user is able to ignore certificate expiry and continue loading the page regardless. This adds a one hour exception to the expiration date.
2021-07-16Improved TOFU implementationJaakko Keränen
If a server sends a different certificate (checked by matching public key fingerprints), abort the connection at the TLS handshake stage. A new error page is shown explaining the situation. A button is provided for conveniently opening Page Information, where trust can be updated. The file format of "visited.txt" was updated, so it is now called "visited.2.txt". The new format includes server port numbers, and the fingerprints are calculated based on public keys. IssueID #308 IssueID #309 IssueID #310
2021-07-13GmCerts: Make the server port knownJaakko Keränen
2021-07-01Using Canonical URLsJaakko Keränen
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.