Comment: | Merge trunk into branch "ofhttpd" |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | ofhttpd |
Files: | files | file ages | folders |
SHA3-256: |
e2a818c0b5b0332a82914b920273081b |
User & Date: | js on 2023-10-15 14:57:05 |
Other Links: | branch diff | manifest | tags |
2023-10-15
| ||
14:57 | Merge trunk into branch "ofhttpd" Leaf check-in: e2a818c0b5 user: js tags: ofhttpd | |
14:55 | Add OFHTTPRequestMethodString() check-in: 12c09ef41e user: js tags: trunk | |
14:33 | ofhttpd: Handle HEAD requests check-in: b80f70a59b user: js tags: ofhttpd | |
Modified .github/workflows/amiga-gcc.yml from [358205481f] to [334c337cae].
1 2 3 4 5 6 7 | name: amiga-gcc on: [push, pull_request] jobs: build: runs-on: ubuntu-latest container: amigadev/crosstools:m68k-amigaos steps: | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | name: amiga-gcc on: [push, pull_request] jobs: build: runs-on: ubuntu-latest container: amigadev/crosstools:m68k-amigaos steps: - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure --host=m68k-amigaos - name: make run: make -j$(nproc) - name: make install |
︙ | ︙ |
Modified .github/workflows/dragonflybsd.yml from [e4f8b62803] to [1865091ef9].
1 2 3 4 5 6 7 8 9 10 11 12 | name: dragonflybsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | name: dragonflybsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: - uses: actions/checkout@v4 - uses: vmactions/dragonflybsd-vm@v0 with: usesh: true copyback: false prepare: | pkg install -y autoconf automake gnutls llvm pkgconf run: | |
︙ | ︙ |
Modified .github/workflows/freebsd.yml from [9828c9c463] to [1b5c6031b1].
1 2 3 4 5 6 7 8 9 10 11 12 | name: freebsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | name: freebsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: - uses: actions/checkout@v4 - uses: vmactions/freebsd-vm@v0 with: usesh: true copyback: false prepare: | pkg install -y autoconf automake gnutls pkgconf run: | |
︙ | ︙ |
Modified .github/workflows/ios.yml from [dd34f22809] to [dbdab2a600].
︙ | ︙ | |||
10 11 12 13 14 15 16 | - x86_64 configure_flags: - - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | - x86_64 configure_flags: - - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: | export IPHONEOS_DEPLOYMENT_TARGET="9.0" if [ "${{ matrix.arch}}" = "x86_64" ]; then sdk="iphonesimulator" |
︙ | ︙ |
Modified .github/workflows/macos-11.yml from [d79ffc1fb9] to [ade6268255].
︙ | ︙ | |||
14 15 16 17 18 19 20 | - --disable-sockets - --disable-sockets --disable-files - --disable-files - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | - --disable-sockets - --disable-sockets --disable-files - --disable-files - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure ${{ matrix.configure_flags }} - name: make run: make -j$(sysctl -n hw.logicalcpu) - name: make check |
︙ | ︙ |
Modified .github/workflows/macos-12.yml from [a15421158f] to [ee9ffcacad].
︙ | ︙ | |||
14 15 16 17 18 19 20 | - --disable-sockets - --disable-sockets --disable-files - --disable-files - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | - --disable-sockets - --disable-sockets --disable-files - --disable-files - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure ${{ matrix.configure_flags }} - name: make run: make -j$(sysctl -n hw.logicalcpu) - name: make check |
︙ | ︙ |
Modified .github/workflows/macos-13.yml from [d116da75c5] to [e68bb1a491].
︙ | ︙ | |||
14 15 16 17 18 19 20 | - --disable-sockets - --disable-sockets --disable-files - --disable-files - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | - --disable-sockets - --disable-sockets --disable-files - --disable-files - --disable-shared steps: - name: Install dependencies run: brew install autoconf automake - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure ${{ matrix.configure_flags }} - name: make run: make -j$(sysctl -n hw.logicalcpu) - name: make check |
︙ | ︙ |
Modified .github/workflows/morphos.yml from [8ce782b0c0] to [f96dbd2310].
1 2 3 4 5 6 7 | name: morphos on: [push, pull_request] jobs: build: runs-on: ubuntu-latest container: amigadev/crosstools:ppc-morphos steps: | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | name: morphos on: [push, pull_request] jobs: build: runs-on: ubuntu-latest container: amigadev/crosstools:ppc-morphos steps: - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure --host=ppc-morphos - name: make run: make -j$(nproc) - name: make install |
︙ | ︙ |
Modified .github/workflows/netbsd-gcc.yml from [4694c85176] to [836cc2e216].
1 2 3 4 5 6 7 8 9 10 11 12 | name: netbsd-gcc on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | name: netbsd-gcc on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: - uses: actions/checkout@v4 - uses: vmactions/netbsd-vm@v0 with: usesh: true copyback: false prepare: | pkg_add autoconf automake gnutls pkgconf run: | |
︙ | ︙ |
Modified .github/workflows/netbsd.yml from [2c6f34efc4] to [04be7a1cbe].
1 2 3 4 5 6 7 8 9 10 11 12 | name: netbsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | name: netbsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: - uses: actions/checkout@v4 - uses: vmactions/netbsd-vm@v0 with: usesh: true copyback: false prepare: | pkg_add autoconf automake clang gnutls pkgconf run: | |
︙ | ︙ |
Modified .github/workflows/nintendo-3ds.yml from [b6f005f187] to [d5f22cd8d0].
1 2 3 4 5 6 7 8 | name: nintendo-3ds on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitarm | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | name: nintendo-3ds on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitarm - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: | docker run \ -e DEVKITPRO=/opt/devkitpro \ -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" \ |
︙ | ︙ |
Modified .github/workflows/nintendo-ds.yml from [1d6308a4b1] to [6b553d5781].
1 2 3 4 5 6 7 8 | name: nintendo-ds on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitarm | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | name: nintendo-ds on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitarm - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: | docker run \ -e DEVKITPRO=/opt/devkitpro \ -e PATH="/opt/devkitpro/devkitARM/bin:$PATH" \ |
︙ | ︙ |
Modified .github/workflows/nintendo-switch.yml from [9d8878050b] to [dd1432abab].
1 2 3 4 5 6 7 8 | name: nintendo-switch on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkita64 | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | name: nintendo-switch on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkita64 - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: | docker run \ -e DEVKITPRO=/opt/devkitpro \ -e PATH="/opt/devkitpro/devkitA64/bin:$PATH" \ |
︙ | ︙ |
Modified .github/workflows/openbsd.yml from [7e76f12fa8] to [ae5824dc32].
1 2 3 4 5 6 7 8 9 10 11 12 | name: openbsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | name: openbsd on: [push, pull_request] jobs: tests: runs-on: macos-12 strategy: matrix: configure_flags: - - --disable-shared - --with-tls=gnutls steps: - uses: actions/checkout@v4 - uses: vmactions/openbsd-vm@v0 with: usesh: true copyback: false prepare: | pkg_add autoconf-2.71 automake-1.16.5 gnutls pkgconf run: | |
︙ | ︙ |
Modified .github/workflows/ubuntu-20.04-32bit.yml from [6af581a780] to [eafc923d25].
︙ | ︙ | |||
20 21 22 23 24 25 26 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure OBJC="clang -m32" ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/ubuntu-20.04-gcc-32bit.yml from [16adbb51e7] to [b216b21e23].
︙ | ︙ | |||
20 21 22 23 24 25 26 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib gobjc | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib gobjc - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure OBJC="gcc -m32" ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/ubuntu-20.04-gcc.yml from [dd262654f6] to [db8cc56ce4].
︙ | ︙ | |||
22 23 24 25 26 27 28 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gobjc libssl-dev gnutls-dev | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gobjc libssl-dev gnutls-dev - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure OBJC="gcc" ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/ubuntu-20.04.yml from [051ed40d72] to [7132512cb3].
︙ | ︙ | |||
22 23 24 25 26 27 28 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install libssl-dev gnutls-dev | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install libssl-dev gnutls-dev - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/ubuntu-latest-32bit.yml from [3cbf56442c] to [c27d1cf836].
︙ | ︙ | |||
20 21 22 23 24 25 26 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure OBJC="clang -m32" ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/ubuntu-latest-gcc-32bit.yml from [b827a9a41f] to [e9d9b51c60].
︙ | ︙ | |||
20 21 22 23 24 25 26 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib gobjc | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | - --without-tls --disable-shared --enable-seluid24 - --without-tls --disable-compiler-tls --disable-threads steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gcc-multilib gobjc - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure OBJC="gcc -m32" ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/ubuntu-latest-gcc.yml from [4509107d9f] to [b7ca4731c5].
︙ | ︙ | |||
22 23 24 25 26 27 28 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gobjc libssl-dev gnutls-dev | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install gobjc libssl-dev gnutls-dev - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure OBJC="gcc" ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/ubuntu-latest.yml from [36a38ec742] to [316b987874].
︙ | ︙ | |||
22 23 24 25 26 27 28 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install libssl-dev gnutls-dev | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | - --with-tls=gnutls - --with-tls=gnutls --disable-shared steps: - name: Install dependencies run: | sudo apt-get update sudo apt-get install libssl-dev gnutls-dev - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: ./configure ${{ matrix.configure_flags }} - name: make run: make -j$(nproc) - name: make check |
︙ | ︙ |
Modified .github/workflows/wii-u.yml from [7d250df7d0] to [e120b2edbe].
1 2 3 4 5 6 7 8 | name: wii-u on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitppc | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | name: wii-u on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitppc - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: | docker run \ -e DEVKITPRO=/opt/devkitpro \ -e PATH="/opt/devkitpro/devkitPPC/bin:$PATH" \ |
︙ | ︙ |
Modified .github/workflows/wii.yml from [59cebc18ff] to [191971b95d].
1 2 3 4 5 6 7 8 | name: wii on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitppc | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | name: wii on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Install dependencies run: docker pull devkitpro/devkitppc - uses: actions/checkout@v4 - name: autogen.sh run: ./autogen.sh - name: configure run: | docker run \ -e DEVKITPRO=/opt/devkitpro \ -e PATH="/opt/devkitpro/devkitPPC/bin:$PATH" \ |
︙ | ︙ |
Modified ChangeLog from [445cbee3bb] to [558a5867dd].
1 2 3 4 5 6 7 8 9 10 11 12 | Legend: * Changes of existing features or bugfixes + New features This file only contains the most significant changes. ObjFW 1.0.2 -> ObjFW 1.0.3, 2023-09-14 * Fixes -[OFConcreteData initWithItemSize:] not setting freeWhenDone to true, which resulted in a memory leak * Fixes -[OFData initWithContentsOfIRI:] freeing the buffer in @catch instead of @finally, which resulted in a memory leak | > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Legend: * Changes of existing features or bugfixes + New features This file only contains the most significant changes. ObjFW 1.0.3 -> ObjFW 1.0.4, 2023-10-08 * Fixes OFFile closing fd 0 when initialization fails * Fixes -[stringByAppendingPathComponent:] on empty strings * Fixes +[OFSystemInfo operatingSystemName] and +[OFSystemInfo operatingSystemVersion] returning nil on some systems * Adds a license for localizations ObjFW 1.0.2 -> ObjFW 1.0.3, 2023-09-14 * Fixes -[OFConcreteData initWithItemSize:] not setting freeWhenDone to true, which resulted in a memory leak * Fixes -[OFData initWithContentsOfIRI:] freeing the buffer in @catch instead of @finally, which resulted in a memory leak |
︙ | ︙ |
Modified README.md from [ab455f4c69] to [f6c0d41526].
︙ | ︙ | |||
383 384 385 386 387 388 389 390 391 392 | <h1 id="support">Support and community</h1> If you have any questions about ObjFW or would like to talk to other ObjFW users, the following venues are available: * The [forum](https://objfw.nil.im/forum) * A [Matrix room](https://matrix.to/#/%23objfw:nil.im) * An IRC channel named `#objfw` on `irc.oftc.net` ([Web chat](https://webchat.oftc.net/?channels=%23objfw)), bridged to the Matrix room above | > > > > > < < < < < < < | 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 | <h1 id="support">Support and community</h1> If you have any questions about ObjFW or would like to talk to other ObjFW users, the following venues are available: * The [forum](https://objfw.nil.im/forum) * A [Matrix room](https://matrix.to/#/%23objfw:nil.im) * A [Discord room](https://objfw.nil.im/discord), bridged to the Matrix room above * A [Telegram room](https://t.me/objfw), bridged to the Matrix room above * A [Slack room](https://objfw.nil.im/slack), bridged to the Matrix room above * An IRC channel named `#objfw` on `irc.oftc.net` ([Web chat](https://webchat.oftc.net/?channels=%23objfw)), bridged to the Matrix room above Please don't hesitate to join any or all of those! <h1 id="donating">Donating</h1> If you want to donate to ObjFW, you can read about possible ways to do so |
︙ | ︙ |
Modified extra.mk.in from [b28c1602b0] to [a9dd21f07e].
1 2 3 4 | OBJFW_SHARED_LIB = @OBJFW_SHARED_LIB@ OBJFW_STATIC_LIB = @OBJFW_STATIC_LIB@ OBJFW_FRAMEWORK = @OBJFW_FRAMEWORK@ OBJFW_LIB_MAJOR = 1 | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | OBJFW_SHARED_LIB = @OBJFW_SHARED_LIB@ OBJFW_STATIC_LIB = @OBJFW_STATIC_LIB@ OBJFW_FRAMEWORK = @OBJFW_FRAMEWORK@ OBJFW_LIB_MAJOR = 1 OBJFW_LIB_MINOR = 1 OBJFW_LIB_PATCH = 0 OBJFW_LIB_MAJOR_MINOR = ${OBJFW_LIB_MAJOR}.${OBJFW_LIB_MINOR} OBJFWRT_SHARED_LIB = @OBJFWRT_SHARED_LIB@ OBJFWRT_STATIC_LIB = @OBJFWRT_STATIC_LIB@ OBJFWRT_FRAMEWORK = @OBJFWRT_FRAMEWORK@ OBJFWRT_LIB_MAJOR = 1 OBJFWRT_LIB_MINOR = 0 |
︙ | ︙ | |||
22 23 24 25 26 27 28 | OBJFWBRIDGE_LIB_PATCH = 0 OBJFWTLS_SHARED_LIB = @OBJFWTLS_SHARED_LIB@ OBJFWTLS_STATIC_LIB = @OBJFWTLS_STATIC_LIB@ OBJFWTLS_FRAMEWORK = @OBJFWTLS_FRAMEWORK@ OBJFWTLS_LIB_MAJOR = 1 OBJFWTLS_LIB_MINOR = 0 | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | OBJFWBRIDGE_LIB_PATCH = 0 OBJFWTLS_SHARED_LIB = @OBJFWTLS_SHARED_LIB@ OBJFWTLS_STATIC_LIB = @OBJFWTLS_STATIC_LIB@ OBJFWTLS_FRAMEWORK = @OBJFWTLS_FRAMEWORK@ OBJFWTLS_LIB_MAJOR = 1 OBJFWTLS_LIB_MINOR = 0 OBJFWTLS_LIB_PATCH = 2 BIN_PREFIX = @BIN_PREFIX@ BRIDGE = @BRIDGE@ CVINCLUDE_INLINE_H = @CVINCLUDE_INLINE_H@ ENCODINGS_A = @ENCODINGS_A@ ENCODINGS_LIB_A = @ENCODINGS_LIB_A@ ENCODINGS_SRCS = @ENCODINGS_SRCS@ |
︙ | ︙ |
Modified src/OFGZIPStream.m from [1ebfe8e246] to [9545f9339e].
︙ | ︙ | |||
302 303 304 305 306 307 308 | { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; return _stream.atEndOfStream; } | | < | | | | 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 | { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; return _stream.atEndOfStream; } - (bool)lowlevelHasDataInReadBuffer { if (_state == OFGZIPStreamStateData) return _inflateStream.hasDataInReadBuffer; else return _stream.hasDataInReadBuffer; } - (void)close { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; |
︙ | ︙ |
Modified src/OFHTTPClient.m from [f5ef5b6f99] to [771a949bd6].
︙ | ︙ | |||
128 129 130 131 132 133 134 | if (IRI.path.length > 0) path = IRI.percentEncodedPath; else path = @"/"; requestString = [OFMutableString stringWithFormat: | | | 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | if (IRI.path.length > 0) path = IRI.percentEncodedPath; else path = @"/"; requestString = [OFMutableString stringWithFormat: @"%@ %@", OFHTTPRequestMethodString(method), path]; if (IRI.query != nil) { [requestString appendString: @"?"]; [requestString appendString: IRI.percentEncodedQuery]; } [requestString appendString: @" HTTP/"]; |
︙ | ︙ | |||
1064 1065 1066 1067 1068 1069 1070 | if (_stream == nil) return -1; return ((OFStream <OFReadyForReadingObserving> *)_stream) .fileDescriptorForReading; } | | | | 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 | if (_stream == nil) return -1; return ((OFStream <OFReadyForReadingObserving> *)_stream) .fileDescriptorForReading; } - (bool)lowlevelHasDataInReadBuffer { return _stream.hasDataInReadBuffer; } - (void)close { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; |
︙ | ︙ |
Modified src/OFHTTPRequest.h from [163a3d1bed] to [ff8f88f432].
︙ | ︙ | |||
136 137 138 139 140 141 142 | - (instancetype)init OF_UNAVAILABLE; @end #ifdef __cplusplus extern "C" { #endif /** | | | | | > > > > > > > > > > > > > > > > > > > > > > > | > | 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | - (instancetype)init OF_UNAVAILABLE; @end #ifdef __cplusplus extern "C" { #endif /** * @brief Returns a string describing the specified request method. * * @param method The request method which should be described as a string * @return A string describing the specified request method */ extern OFString *_Nullable OFHTTPRequestMethodString( OFHTTPRequestMethod method); /** * @brief Returns the request method for the specified string. * * @param string The string for which the request method should be returned * @return The request method for the specified string * @throw OFInvalidFormatException The specified string is not a valid HTTP * request method */ extern OFHTTPRequestMethod OFHTTPRequestMethodParseString(OFString *string); /** * @brief Returns a C string describing the specified request method. * * @deprecated Use @ref OFHTTPRequestMethodString instead. * * @param method The request method which should be described as a C string * @return A C string describing the specified request method */ extern const char *_Nullable OFHTTPRequestMethodName(OFHTTPRequestMethod method) OF_DEPRECATED(ObjFW, 1, 1, "Use OFHTTPRequestMethodString instead"); /** * @brief Returns the request method for the specified string. * * @deprecated Use @ref OFHTTPRequestMethodParseString instead. * * @param string The string for which the request method should be returned * @return The request method for the specified string * @throw OFInvalidFormatException The specified string is not a valid HTTP * request method */ extern OFHTTPRequestMethod OFHTTPRequestMethodParseName(OFString *string) OF_DEPRECATED(ObjFW, 1, 1, "Use OFHTTPRequestMethodParseString instead"); #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END |
Modified src/OFHTTPRequest.m from [f630f4e80b] to [7d8bd2c275].
︙ | ︙ | |||
25 26 27 28 29 30 31 | #import "OFString.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFOutOfRangeException.h" #import "OFUnsupportedVersionException.h" | | | | | | | | | | | | | > > > > > > > > > > > > > > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #import "OFString.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFOutOfRangeException.h" #import "OFUnsupportedVersionException.h" OFString * OFHTTPRequestMethodString(OFHTTPRequestMethod method) { switch (method) { case OFHTTPRequestMethodOptions: return @"OPTIONS"; case OFHTTPRequestMethodGet: return @"GET"; case OFHTTPRequestMethodHead: return @"HEAD"; case OFHTTPRequestMethodPost: return @"POST"; case OFHTTPRequestMethodPut: return @"PUT"; case OFHTTPRequestMethodDelete: return @"DELETE"; case OFHTTPRequestMethodTrace: return @"TRACE"; case OFHTTPRequestMethodConnect: return @"CONNECT"; } return nil; } OFHTTPRequestMethod OFHTTPRequestMethodParseString(OFString *string) { if ([string isEqual: @"OPTIONS"]) return OFHTTPRequestMethodOptions; if ([string isEqual: @"GET"]) return OFHTTPRequestMethodGet; if ([string isEqual: @"HEAD"]) return OFHTTPRequestMethodHead; if ([string isEqual: @"POST"]) return OFHTTPRequestMethodPost; if ([string isEqual: @"PUT"]) return OFHTTPRequestMethodPut; if ([string isEqual: @"DELETE"]) return OFHTTPRequestMethodDelete; if ([string isEqual: @"TRACE"]) return OFHTTPRequestMethodTrace; if ([string isEqual: @"CONNECT"]) return OFHTTPRequestMethodConnect; @throw [OFInvalidFormatException exception]; } /* Deprecated */ const char * OFHTTPRequestMethodName(OFHTTPRequestMethod method) { return OFHTTPRequestMethodString(method).UTF8String; } /* Deprecated */ OFHTTPRequestMethod OFHTTPRequestMethodParseName(OFString *string) { return OFHTTPRequestMethodParseString(string); } @implementation OFHTTPRequest @synthesize IRI = _IRI, method = _method, headers = _headers; + (instancetype)requestWithIRI: (OFIRI *)IRI { return [[[self alloc] initWithIRI: IRI] autorelease]; |
︙ | ︙ | |||
239 240 241 242 243 244 245 | _protocolVersion.major, _protocolVersion.minor]; } - (OFString *)description { void *pool = objc_autoreleasePoolPush(); | | | | 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | _protocolVersion.major, _protocolVersion.minor]; } - (OFString *)description { void *pool = objc_autoreleasePoolPush(); OFString *method = OFHTTPRequestMethodString(_method); OFString *indentedHeaders, *remoteAddress, *ret; indentedHeaders = [_headers.description stringByReplacingOccurrencesOfString: @"\n" withString: @"\n\t"]; if (_hasRemoteAddress) remoteAddress = OFSocketAddressString(&_remoteAddress); else remoteAddress = nil; ret = [[OFString alloc] initWithFormat: @"<%@:\n\tIRI = %@\n" @"\tMethod = %@\n" @"\tHeaders = %@\n" @"\tRemote address = %@\n" @">", self.class, _IRI, method, indentedHeaders, remoteAddress]; objc_autoreleasePoolPop(pool); return [ret autorelease]; } @end |
Modified src/OFHTTPServer.m from [df8e40fa8b] to [c229043b21].
︙ | ︙ | |||
378 379 380 381 382 383 384 | pos = [line rangeOfString: @" "].location; if (pos == OFNotFound) return [self sendErrorAndClose: 400]; method = [line substringToIndex: pos]; @try { | | | 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 | pos = [line rangeOfString: @" "].location; if (pos == OFNotFound) return [self sendErrorAndClose: 400]; method = [line substringToIndex: pos]; @try { _method = OFHTTPRequestMethodParseString(method); } @catch (OFInvalidArgumentException *e) { return [self sendErrorAndClose: 405]; } @try { OFRange range = OFMakeRange(pos + 1, line.length - pos - 10); |
︙ | ︙ | |||
731 732 733 734 735 736 737 | objc_autoreleasePoolPop(pool); return 0; } } | | | | 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 | objc_autoreleasePoolPop(pool); return 0; } } - (bool)lowlevelHasDataInReadBuffer { return _socket.hasDataInReadBuffer; } - (int)fileDescriptorForReading { return _socket.fileDescriptorForReading; } |
︙ | ︙ |
Modified src/OFInflateStream.m from [7aafb9081b] to [fd902a590d].
︙ | ︙ | |||
670 671 672 673 674 675 676 | - (int)fileDescriptorForReading { return ((id <OFReadyForReadingObserving>)_stream) .fileDescriptorForReading; } | | | | 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 | - (int)fileDescriptorForReading { return ((id <OFReadyForReadingObserving>)_stream) .fileDescriptorForReading; } - (bool)lowlevelHasDataInReadBuffer { return (_stream.hasDataInReadBuffer || _bufferLength - _bufferIndex > 0); } - (void)close { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; |
︙ | ︙ |
Modified src/OFKernelEventObserver.m from [65045f52e2] to [d1361f5797].
︙ | ︙ | |||
204 205 206 207 208 209 210 | - (bool)of_processReadBuffers { void *pool = objc_autoreleasePoolPush(); bool foundInReadBuffer = false; for (id object in [[_readObjects copy] autorelease]) { | | | > > > > | | > | 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | - (bool)of_processReadBuffers { void *pool = objc_autoreleasePoolPush(); bool foundInReadBuffer = false; for (id object in [[_readObjects copy] autorelease]) { void *pool2; if (![object isKindOfClass: [OFStream class]]) continue; pool2 = objc_autoreleasePoolPush(); if ([object hasDataInReadBuffer] && (![object of_isWaitingForDelimiter] || [object lowlevelHasDataInReadBuffer])) { if ([_delegate respondsToSelector: @selector(objectIsReadyForReading:)]) [_delegate objectIsReadyForReading: object]; foundInReadBuffer = true; } |
︙ | ︙ |
Modified src/OFLHADecompressingStream.m from [a9c8d0ec12] to [94f1868a8f].
︙ | ︙ | |||
503 504 505 506 507 508 509 | - (int)fileDescriptorForReading { return ((id <OFReadyForReadingObserving>)_stream) .fileDescriptorForReading; } | | | | 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 | - (int)fileDescriptorForReading { return ((id <OFReadyForReadingObserving>)_stream) .fileDescriptorForReading; } - (bool)lowlevelHasDataInReadBuffer { return (_stream.hasDataInReadBuffer || _bufferLength - _bufferIndex > 0); } - (void)close { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; |
︙ | ︙ |
Modified src/OFStream.h from [99614e7bb2] to [bdf949a291].
︙ | ︙ | |||
1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 | * * @note Override this method with your actual end of stream checking * implementation when subclassing! * * @return Whether the lowlevel is at the end of the stream */ - (bool)lowlevelIsAtEndOfStream; @end OF_ASSUME_NONNULL_END | > > > > > > > > > > > > | 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 | * * @note Override this method with your actual end of stream checking * implementation when subclassing! * * @return Whether the lowlevel is at the end of the stream */ - (bool)lowlevelIsAtEndOfStream; /** * @brief Returns whether the lowlevel has data in the read buffer. * * @warning Do not call this directly! * * @note Override this method in case your stream can buffer data itself, such * as when implementing @ref OFTLSStream. If not overridden, it always * returns false. * @return Whether the lowlevel has data in the read buffer */ - (bool)lowlevelHasDataInReadBuffer; @end OF_ASSUME_NONNULL_END |
Modified src/OFStream.m from [15b8e35c16] to [be4eb53104].
︙ | ︙ | |||
92 93 94 95 96 97 98 | { OFFreeMemory(_readBufferMemory); OFFreeMemory(_writeBuffer); [super dealloc]; } | < < < < < > > > > > > > > > > | 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | { OFFreeMemory(_readBufferMemory); OFFreeMemory(_writeBuffer); [super dealloc]; } - (size_t)lowlevelReadIntoBuffer: (void *)buffer length: (size_t)length { OF_UNRECOGNIZED_SELECTOR } - (size_t)lowlevelWriteBuffer: (const void *)buffer length: (size_t)length { OF_UNRECOGNIZED_SELECTOR } - (bool)lowlevelIsAtEndOfStream { OF_UNRECOGNIZED_SELECTOR } - (bool)lowlevelHasDataInReadBuffer { return false; } - (id)copy { return [self retain]; } - (bool)isAtEndOfStream |
︙ | ︙ | |||
1182 1183 1184 1185 1186 1187 1188 | } @finally { free(UTF8String); } } - (bool)hasDataInReadBuffer { | | | 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 | } @finally { free(UTF8String); } } - (bool)hasDataInReadBuffer { return (_readBufferLength > 0 || [self lowlevelHasDataInReadBuffer]); } - (bool)canBlock { return _canBlock; } |
︙ | ︙ |
Modified src/OFTLSStream.h from [f204428d75] to [db5ba510f8].
︙ | ︙ | |||
57 58 59 60 61 62 63 | * * @brief A class that provides Transport Layer Security on top of a stream. * * This class is a class cluster and returns a suitable OFTLSStream subclass, * if available. * * Subclasses need to override @ref lowlevelReadIntoBuffer:length:, | | > | < < < > | | | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | * * @brief A class that provides Transport Layer Security on top of a stream. * * This class is a class cluster and returns a suitable OFTLSStream subclass, * if available. * * Subclasses need to override @ref lowlevelReadIntoBuffer:length:, * @ref lowlevelWriteBuffer:length:, * @ref lowlevelHasDataInReadBuffer and * @ref asyncPerformClientHandshakeWithHost:runLoopMode:. * * In order to get access to the underlying stream, @ref underlyingStream can * be used. */ @interface OFTLSStream: OFStream <OFReadyForReadingObserving, OFReadyForWritingObserving> { OFStream <OFReadyForReadingObserving, OFReadyForWritingObserving> *_underlyingStream; bool _verifiesCertificates; |
︙ | ︙ | |||
105 106 107 108 109 110 111 | * stream. * * @param stream The stream to use as underlying stream. Must not be closed * before the TLS stream is closed. * @return A new, autoreleased TLS stream */ + (instancetype)streamWithStream: (OFStream <OFReadyForReadingObserving, | | | | 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | * stream. * * @param stream The stream to use as underlying stream. Must not be closed * before the TLS stream is closed. * @return A new, autoreleased TLS stream */ + (instancetype)streamWithStream: (OFStream <OFReadyForReadingObserving, OFReadyForWritingObserving> *)stream; /** * @brief Initializes the TLS stream with the specified stream as its * underlying stream. * * @param stream The stream to use as underlying stream. Must not be closed * before the TLS stream is closed. * @return An initialized TLS stream */ - (instancetype)initWithStream: (OFStream <OFReadyForReadingObserving, OFReadyForWritingObserving> *)stream OF_DESIGNATED_INITIALIZER; /** * @brief Asynchronously performs the TLS client handshake for the specified * host and calls the delegate afterwards. * * @param host The host to perform the handshake with |
︙ | ︙ |
Modified src/OFTLSStream.m from [4de584ae09] to [0b19f7bfbb].
︙ | ︙ | |||
137 138 139 140 141 142 143 | } - (size_t)lowlevelWriteBuffer: (const void *)buffer length: (size_t)length { OF_UNRECOGNIZED_SELECTOR } | < < < < < < | 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | } - (size_t)lowlevelWriteBuffer: (const void *)buffer length: (size_t)length { OF_UNRECOGNIZED_SELECTOR } - (bool)lowlevelIsAtEndOfStream { return _underlyingStream.atEndOfStream; } - (int)fileDescriptorForReading { |
︙ | ︙ |
Modified src/OFTarArchive.m from [0ba99f6e66] to [1c76370f81].
︙ | ︙ | |||
358 359 360 361 362 363 364 | { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; return _atEndOfStream; } | | | | 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 | { if (_stream == nil) @throw [OFNotOpenException exceptionWithObject: self]; return _atEndOfStream; } - (bool)lowlevelHasDataInReadBuffer { return _stream.hasDataInReadBuffer; } - (int)fileDescriptorForReading { return ((id <OFReadyForReadingObserving>)_stream) .fileDescriptorForReading; } |
︙ | ︙ |
Modified src/OFZIPArchive.m from [03f366c882] to [139c2dfeb6].
︙ | ︙ | |||
937 938 939 940 941 942 943 | expectedChecksum: expectedChecksum]; } } return ret; } | | | < | 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 | expectedChecksum: expectedChecksum]; } } return ret; } - (bool)lowlevelHasDataInReadBuffer { return ((OFStream *)_decompressedStream).hasDataInReadBuffer; } - (int)fileDescriptorForReading { return ((id <OFReadyForReadingObserving>)_decompressedStream) .fileDescriptorForReading; } |
︙ | ︙ |
Modified src/exceptions/OFHTTPRequestFailedException.m from [fd787d72c8] to [4a244e4e24].
︙ | ︙ | |||
57 58 59 60 61 62 63 | [_response release]; [super dealloc]; } - (OFString *)description { | | | | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | [_response release]; [super dealloc]; } - (OFString *)description { OFString *method = OFHTTPRequestMethodString(_request.method); return [OFString stringWithFormat: @"An HTTP %@ request with IRI %@ failed with code %hd!", method, _request.IRI, _response.statusCode]; } @end |
Modified src/macros.h from [caf7b03bf1] to [1006063eb3].
︙ | ︙ | |||
287 288 289 290 291 292 293 294 295 296 297 298 299 300 | #if __has_attribute(__objc_designated_initializer__) # define OF_DESIGNATED_INITIALIZER \ __attribute__((__objc_designated_initializer__)) #else # define OF_DESIGNATED_INITIALIZER #endif #if __has_attribute(__objc_boxable__) # define OF_BOXABLE __attribute__((__objc_boxable__)) #else # define OF_BOXABLE #endif | > > > > > > | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | #if __has_attribute(__objc_designated_initializer__) # define OF_DESIGNATED_INITIALIZER \ __attribute__((__objc_designated_initializer__)) #else # define OF_DESIGNATED_INITIALIZER #endif #ifdef __GNUC__ # define OF_DEPRECATED(project, major, minor, msg) \ __attribute__((__deprecated__("Deprecated in " #project " " \ #major "." #minor ": " msg))) #endif #if __has_attribute(__objc_boxable__) # define OF_BOXABLE __attribute__((__objc_boxable__)) #else # define OF_BOXABLE #endif |
︙ | ︙ |
Modified src/tls/OFGnuTLSTLSStream.m from [ba84ecba17] to [3f3e9b7029].
︙ | ︙ | |||
15 16 17 18 19 20 21 | #include "config.h" #include <errno.h> #import "OFGnuTLSTLSStream.h" #import "OFData.h" | < | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include "config.h" #include <errno.h> #import "OFGnuTLSTLSStream.h" #import "OFData.h" #import "OFAlreadyOpenException.h" #import "OFInitializationFailedException.h" #import "OFNotOpenException.h" #import "OFReadFailedException.h" #import "OFTLSHandshakeFailedException.h" #import "OFWriteFailedException.h" |
︙ | ︙ | |||
182 183 184 185 186 187 188 | bytesWritten: ret errNo: 0]; } return ret; } | | < < < | < < < < < < < < < < < < | < < < | 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | bytesWritten: ret errNo: 0]; } return ret; } - (bool)lowlevelHasDataInReadBuffer { return (_underlyingStream.hasDataInReadBuffer || gnutls_record_check_pending(_session) > 0); } - (void)asyncPerformClientHandshakeWithHost: (OFString *)host runLoopMode: (OFRunLoopMode)runLoopMode { static const OFTLSStreamErrorCode initFailedErrorCode = OFTLSStreamErrorCodeInitializationFailed; |
︙ | ︙ |
Modified src/tls/OFOpenSSLTLSStream.m from [4f42a57c0b] to [175948cb73].
︙ | ︙ | |||
15 16 17 18 19 20 21 | #include "config.h" #include <errno.h> #import "OFOpenSSLTLSStream.h" #import "OFData.h" | < | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include "config.h" #include <errno.h> #import "OFOpenSSLTLSStream.h" #import "OFData.h" #import "OFAlreadyOpenException.h" #import "OFInitializationFailedException.h" #import "OFNotOpenException.h" #import "OFReadFailedException.h" #import "OFTLSHandshakeFailedException.h" #import "OFWriteFailedException.h" |
︙ | ︙ | |||
193 194 195 196 197 198 199 | [_underlyingStream writeBuffer: _buffer length: tmp]; [_underlyingStream flushWriteBuffer]; } return bytesWritten; } | | < < < | < < < < < < < < < < < < < < < < < < < < < < | < < < | 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | [_underlyingStream writeBuffer: _buffer length: tmp]; [_underlyingStream flushWriteBuffer]; } return bytesWritten; } - (bool)lowlevelHasDataInReadBuffer { return (_underlyingStream.hasDataInReadBuffer || SSL_has_pending(_SSL) || BIO_ctrl_pending(_readBIO) > 0); } - (void)asyncPerformClientHandshakeWithHost: (OFString *)host runLoopMode: (OFRunLoopMode)runLoopMode { static const OFTLSStreamErrorCode initFailedErrorCode = OFTLSStreamErrorCodeInitializationFailed; |
︙ | ︙ |
Modified src/tls/OFSecureTransportTLSStream.m from [4775886a79] to [89fd642a80].
︙ | ︙ | |||
14 15 16 17 18 19 20 | */ #include "config.h" #include <errno.h> #import "OFSecureTransportTLSStream.h" | < | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | */ #include "config.h" #include <errno.h> #import "OFSecureTransportTLSStream.h" #import "OFAlreadyOpenException.h" #import "OFNotOpenException.h" #import "OFReadFailedException.h" #import "OFTLSHandshakeFailedException.h" #import "OFWriteFailedException.h" |
︙ | ︙ | |||
165 166 167 168 169 170 171 | requestedLength: length bytesWritten: bytesWritten errNo: 0]; return bytesWritten; } | | < < < < | < < < < < < < < < < < < < < | | < < < | 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | requestedLength: length bytesWritten: bytesWritten errNo: 0]; return bytesWritten; } - (bool)lowlevelHasDataInReadBuffer { size_t bufferSize; return (_underlyingStream.hasDataInReadBuffer || (SSLGetBufferedReadSize(_context, &bufferSize) == noErr && bufferSize > 0)); } - (void)asyncPerformClientHandshakeWithHost: (OFString *)host runLoopMode: (OFRunLoopMode)runLoopMode { static const OFTLSStreamErrorCode initFailedErrorCode = OFTLSStreamErrorCodeInitializationFailed; |
︙ | ︙ |
Modified utils/ofarc/localization/de.json from [8efe141d12] to [e4301e42d4].
1 2 3 4 5 6 7 8 9 | /* * German localization for ofarc. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ | > | > | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /* * German localization for ofarc. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { usage: [ "Benutzung: %[prog] -[acCfhlnpqtvx] archiv.zip [datei1 datei2 ...]" ], full_usage: [ "Optionen:\n", " -a --append Zu Archiv hinzufügen\n", " -c --create Archiv erstellen\n", " -C --directory In angegebenes Verzeichnis entpacken\n", " -E --encoding Das Encoding des Archivs (nur tar-Dateien)\n", " -f --force Existierende Dateien überschreiben\n", " -h --help Diese Hilfe anzeigen\n", |
︙ | ︙ | |||
34 35 36 37 38 39 40 | ], "5_options_mutually_exclusive": [ "Fehler: -%[shortopt1] / --%[longopt1], -%[shortopt2] / ", "--%[longopt2], -%[shortopt3] / --%[longopt3], ", "-%[shortopt4] / --%[longopt4] und\n", " -%[shortopt5] / --%[longopt5] schließen sich gegenseitig aus!" ], | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | ], "5_options_mutually_exclusive": [ "Fehler: -%[shortopt1] / --%[longopt1], -%[shortopt2] / ", "--%[longopt2], -%[shortopt3] / --%[longopt3], ", "-%[shortopt4] / --%[longopt4] und\n", " -%[shortopt5] / --%[longopt5] schließen sich gegenseitig aus!" ], option_takes_no_argument: "%[prog]: Option --%[opt] nimmt kein Argument", long_option_requires_argument: [ "%[prog]: Option --%[opt] benötigt ein Argument" ], option_requires_argument: "%[prog]: Option -%[opt] benötigt ein Argument", unknown_long_option: "%[prog]: Unbekannte Option: --%[opt]", unknown_option: "%[prog]: Unbekannte Option: -%[opt]", invalid_encoding: "%[prog]: Invalid encoding: %[encoding]", writing_not_supported: [ "Schreiben von Dateien des Typs %[type] wird (noch) nicht unterstützt!" ], failed_to_create_directory: [ "Fehler beim Erstellen des Verzeichnis %[dir]: %[error]" ], failed_to_open_file: "Fehler beim Öffnen der Datei %[file]: %[error]", unknown_archive_type: "Unbekannter Archivtyp: %[type]", failed_to_read_file: "Fehler beim Lesen der Datei %[file]: %[error]", failed_to_write_file: "Fehler beim Schreiben der Datei %[file]: %[error]", failed_to_seek_in_file: "Fehler beim Suchen in Datei %[file]: %[error]", file_is_not_a_valid_archive: "Datei %[file] ist kein gültiges Archiv!", file_skipped: "übersprungen", ask_overwrite: "%[file] überschreiben? [ynAN?]", ask_overwrite_help: [ " y: Ja\n", " n: Nein\n", " A: Immer\n", " N: Nie" ], skipping_file: "Überspringe %[file]...", extracting_file: "Entpacke %[file]...", extracting_file_percent: "Entpacke %[file]... %[percent]%", extracting_file_done: "Entpacke %[file]... fertig", cannot_list_gz: "Kann Dateien eines .gz-Archivs nicht auflisten!", cannot_extract_specific_file_from_gz: [ "Kann keine spezifische Datei aus einem .gz-Archiv entpacken!" ], cannot_print_specific_file_from_gz: [ "Kann keine spezifische Datei aus einem .gz-Archiv ausgeben!" ], list_size: [ "Größe: ", [ {"size == 1": "1 Byte"}, {"": "%[size] Bytes"} ] ], list_posix_permissions: "POSIX-Berechtigungen: %[perm]", list_owner_account_id: "Besitzerkontennummer: %[id]", list_group_owner_account_id: "Gruppenbesitzerkontennummer: %[id]", list_owner_account_name: "Besitzerkontenname: %[name]", list_group_owner_account_name: "Gruppebesitzerkontenname: %[name]", list_header_level: "Header-Level: %[level]", list_modification_date: "Änderungsdatum: %[date]", list_type_normal: "Typ: Normale Datei", list_type_hardlink: "Typ: Harter Link", list_type_symlink: "Typ: Symbolischer Link", list_link_target: "Zieldateiname: %[target]", list_type_character_device: "Typ: Zeichenorientiertes Gerät", list_type_block_device: "Typ: Blockorientiertes Gerät", list_device_major: "Major-Nummer des Geräts: %[major]", list_device_minor: "Minor-Nummer des Geräts: %[minor]", list_type_directory: "Typ: Verzeichnis", list_type_fifo: "Typ: FIFO", list_type_contiguous_file: "Typ: Zusammenhängende Datei", list_type_unknown: "Typ: Unbekannt", list_compressed_size: [ "Komprimierte Größe: ", [ {"size == 1": "1 Byte"}, {"": "%[size] Bytes"} ] ], list_uncompressed_size: [ "Unkomprimierte Größe: ", [ {"size == 1": "1 Byte"}, {"": "%[size] Bytes"} ] ], list_compression_method: "Kompressionsmethode: %[method]", list_osid: "Betriebssystem-Identifikator: %[osid]", list_extensions: "Erweiterungen: %[extensions]", list_version_made_by: "Erstellt mit Version: %[version]", list_min_version_needed: "Mindestens benötigte Version: %[version]", list_general_purpose_bit_flag: "General Purpose Bit Flag: %[gpbf]", list_extra_field: "Extra-Feld: %[extra]", list_comment: "Kommentar: %[comment]", refusing_to_extract_file: "Verweigere Entpacken von %[file]!", file_not_in_archive: "Datei %[file] ist nicht im Archiv!", print_no_file_specified: [ "Benötige eine oder mehrere Dateien zum Ausgeben!" ], add_no_file_specified: [ "Benötige eine oder mehrere Dateien zum Hinzufügen!" ], adding_file: "Füge %[file] hinzu...", adding_file_percent: "Füge %[file] hinzu... %[percent]%", adding_file_done: "Füge %[file] hinzu... fertig", } |
Modified utils/ofarc/localization/localizations.json from [3b7bf346d5] to [df82f11fb6].
1 2 3 4 5 6 7 8 9 | /* * Localization mapping for ofarc. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ | > | > | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* * Localization mapping for ofarc. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { de: { "": "de" }, deutsch: { "": "de" }, german: { "": "de" }, } |
Modified utils/ofdns/localization/de.json from [00f9ddff1d] to [755b1114e5].
1 2 3 4 5 6 7 8 9 | /* * German localization for ofdns. * * Copyright (c) 2020-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ | > | > | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /* * German localization for ofdns. * * Copyright (c) 2020-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { usage: "Benutzung: %[prog] -[chst] domain1 [domain2 ...]", full_usage: [ "Optionen:\n", " -c --class Die anzufragende DNS-Klasse (standardmäßig IN)\n", " -h --help Diese Hilfe anzeigen\n", " -s --server Der abzufragende Server\n", " -t --type Der anzufragende Record-Typ (standardmäßig ALL,\n", " kann wiederholt werden)\n", " --tcp Benutzung von TCP erzwingen" ], long_option_requires_argument: [ "%[prog]: Option --%[opt] benötigt ein Argument" ], option_requires_argument: "%[prog]: Option -%[opt] benötigt ein Argument", unknown_long_option: "%[prog]: Unbekannte Option: --%[opt]", unknown_option: "%[prog]: Unbekannte Option: -%[opt]", failed_to_resolve: "Auflösen fehlgeschlagen: %[exception]", } |
Modified utils/ofdns/localization/localizations.json from [48cf40147f] to [52f2647bf8].
1 2 3 4 5 6 7 8 9 | /* * Localization mapping for ofdns. * * Copyright (c) 2020-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ | > | > | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* * Localization mapping for ofdns. * * Copyright (c) 2020-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { de: { "": "de" }, deutsch: { "": "de" }, german: { "": "de" }, } |
Modified utils/ofhash/localization/de.json from [90f618c8e5] to [946fe7d617].
1 2 3 4 5 6 7 8 9 | /* * German localization for ofhash. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ | > | > | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* * German localization for ofhash. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { usage: [ "Benutzung: %[prog] [--md5] [--ripemd160] [--sha1] [--sha224] ", "[--sha256] [--sha384] [--sha512] datei1 [datei2 ...]" ], unknown_long_option: "%[prog]: Unbekannte Option: --%[opt]", unknown_option: "%[prog]: Unbekannte Option: -%[opt]", failed_to_open_file: "Fehler beim Öffnen der Datei %[file]: %[error]", failed_to_read_file: "Fehler beim Lesen der Datei %[file]: %[error]", } |
Modified utils/ofhash/localization/localizations.json from [6d7174d6b9] to [19e35e3a75].
1 2 3 4 5 6 7 8 9 | /* * Localization mapping for ofhash. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ | > | > | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* * Localization mapping for ofhash. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { de: { "": "de" }, deutsch: { "": "de" }, german: { "": "de" }, } |
Modified utils/ofhttp/OFHTTP.m from [d2650dbe5b] to [336f94ad28].
︙ | ︙ | |||
369 370 371 372 373 374 375 | - (void)setMethod: (OFString *)method { void *pool = objc_autoreleasePoolPush(); method = method.uppercaseString; @try { | | | 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 | - (void)setMethod: (OFString *)method { void *pool = objc_autoreleasePoolPush(); method = method.uppercaseString; @try { _method = OFHTTPRequestMethodParseString(method); } @catch (OFInvalidArgumentException *e) { [OFStdErr writeLine: OF_LOCALIZED(@"invalid_input_method", @"%[prog]: Invalid request method %[method]!", @"prog", [OFApplication programName], @"method", method)]; [OFApplication terminateWithStatus: 1]; } |
︙ | ︙ |
Modified utils/ofhttp/localization/de.json from [c2800d271b] to [d8f293a0f2].
1 2 3 4 5 6 7 8 9 | /* * German localization for ofhttp. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ | > | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | /* * German localization for ofhttp. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this localization for * any purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { usage: "Benutzung: %[prog] -[cehHmoOPqv] iri1 [iri2 ...]", full_usage: [ "Optionen:\n", " -b --body Angegebene Datei als Body übergeben\n", " (- für Standard-Eingabe)\n", " -c --continue Download von existierender Datei ", "fortsetzen\n", " -f --force Existierende Datei überschreiben\n", " -h --help Diese Hilfe anzeigen\n", " -H --header Einen Header (z.B. X-Foo:Bar) hinzufügen\n", " -m --method HTTP Request-Methode setzen\n", " -o --output Ausgabe-Dateiname angeben\n", " -O --detect-filename Dateiname mittels HEAD-Request ermitteln\n", " -P --proxy SOCKS5-Proxy angeben\n", " -q --quiet Ruhiger Modus (keine Ausgabe außer Fehler)", "\n", " -v --verbose Ausführlicher Modus (gibt Header aus)\n", " --insecure TLS-Fehler ignorieren und unsichere\n", " Weiterleitungen erlauben\n", " --ignore-status HTTP Status-Code ignorieren" ], invalid_input_header: "%[prog]: Header müssen im Format Name:Wert sein!", invalid_input_method: "%[prog]: Ungültige Request-Methode %[method]!", invalid_input_proxy: "%[prog]: Proxy muss im Format Host:Port sein!", long_argument_missing: "%[prog]: Argument für Option --%[opt] fehlt", argument_missing: "%[prog]: Argument für option -%[opt] fehlt", option_takes_no_argument: "%[prog]: Option --%[opt] nimmt kein Argument", unknown_long_option: "%[prog]: Unbekannte Option: --%[opt]", unknown_option: "%[prog]: Unbekannte Option: -%[opt]", quiet_xor_verbose: [ "%[prog]: -q / --quiet und -v / --verbose schließen sich gegenseitig ", "aus!" ], output_xor_detect_filename: [ "%[prog]: -o / --output und -O / --detect-filename schließen sich ", "gegenseitig aus!" ], output_only_with_one_iri: [ "%[prog]: -o / --output kann nicht mit mehr als einer IRI benutzt ", "werden!" ], download_resolve_host_failed: [ "%[prog]: Fehler beim Download von <%[iri]>!\n", " Host auflösen fehlgeschlagen: %[exception]" ], download_failed_connection_failed: [ "%[prog]: Fehler beim Download von <%[iri]>!\n", " Verbindung fehlgeschlagen: %[exception]" ], download_failed_invalid_server_response: [ "%[prog]: Fehler beim Download von <%[iri]>!\n", " Ungültige Antwort vom Server!" ], no_tls_support: [ "%[prog]: Keine TLS-Unterstützung in ObjFW!\n", " Um via HTTPS runterzuladen müssen Sie entweder ObjFW mit TLS-", "Unterstützung\n", " kompilieren oder eine Bibliothek mittels „preload” laden, welche ", "TLS-Support\n", " zu ObjFW hinzufügt!" ], download_failed_tls_handshake_failed: [ "%[prog]: Fehler beim Download von <%[iri]>!\n", " TLS-Handshake fehlgeschlagen: %[error]" ], download_failed_read_or_write_failed_any: "Lesen oder Schreiben", download_failed_read_or_write_failed_read: "Lesen", download_failed_read_or_write_failed_write: "Schreiben", download_failed_read_or_write_failed: [ "%[prog]: Fehler beim Download von <%[iri]>!\n", " %[error]: %[exception]" ], download_failed: [ "%[prog]: Fehler beim Download von <%[iri]>!\n", " HTTP Status-Code: %[code]" ], download_error: "Fehler!", download_failed_exception: [ "%[prog]: Fehler beim Download von <%[iri]>!\n", " %[exception]" ], download_done: "Fertig!", invalid_iri: "%[prog]: Ungültige IRI: <%[iri]>!", invalid_scheme: "%[prog]: Ungültiges Schema: <%[iri]>!", type_unknown: "unbekannt", size_gib: "%[num] GiB", size_mib: "%[num] MiB", size_kib: "%[num] KiB", size_bytes: [ [ {"num == 1": "1 Byte"}, {"": "%[num] Bytes"} ] ], size_unknown: "unbekannt", info_name_unaligned: "Name: %[name]", info_name: "Name: %[name]", info_type: "Typ: %[type]", info_size: "Größe: %[size]", output_already_exists: "%[prog]: Datei %[filename] existiert bereits!", failed_to_open_output: [ "%[prog]: Kann Datei %[filename] nicht öffnen: %[exception]" ], eta_days: "%[num] t ", progress_bytes: [ [ {"num == 1": "1 Byte "}, {"": "%[num] Bytes"} ] ], } |
Modified utils/ofhttp/localization/localizations.json from [fed01a059f] to [be4c09810e].
1 2 3 4 5 6 7 8 9 | /* * Localization mapping for ofhttp. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ | > | > | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* * Localization mapping for ofhttp. * * Copyright (c) 2017-2023 Jonathan Schleifer <js@nil.im> * * Permission to use, copy, modify, and/or distribute this mapping for any * purpose with or without fee is hereby granted. */ /* vim: se ft=javascript sw=4 et: */ { de: { "": "de" }, deutsch: { "": "de" }, german: { "": "de" }, } |
Modified utils/ofhttpd/OFHTTPD.m from [578af30764] to [672eefd57d].
︙ | ︙ | |||
179 180 181 182 183 184 185 | - (void)server: (OFHTTPServer *)server didReceiveRequest: (OFHTTPRequest *)request requestBody: (OFStream *)requestBody response: (OFHTTPResponse *)response { OFString *path; | | | | 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | - (void)server: (OFHTTPServer *)server didReceiveRequest: (OFHTTPRequest *)request requestBody: (OFStream *)requestBody response: (OFHTTPResponse *)response { OFString *path; OFLog(@"Handling %@ request %@", OFHTTPRequestMethodString(request.method), request); if (request.method != OFHTTPRequestMethodGet && request.method != OFHTTPRequestMethodHead) { response.statusCode = 405; return; } |
︙ | ︙ |