slidge-whatsapp 0.2.5__cp311-cp311-manylinux_2_36_aarch64.whl → 0.2.7__cp311-cp311-manylinux_2_36_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of slidge-whatsapp might be problematic. Click here for more details.
- slidge_whatsapp/config.py +3 -0
- slidge_whatsapp/event.go +31 -26
- slidge_whatsapp/gateway.go +13 -9
- slidge_whatsapp/gateway.py +2 -2
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.h +170 -170
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.so +0 -0
- slidge_whatsapp/generated/build.py +135 -135
- slidge_whatsapp/generated/whatsapp.c +1496 -1496
- slidge_whatsapp/generated/whatsapp.go +1137 -1137
- slidge_whatsapp/generated/whatsapp.py +1216 -1216
- slidge_whatsapp/generated/whatsapp_go.h +170 -170
- slidge_whatsapp/go.mod +15 -12
- slidge_whatsapp/go.sum +35 -29
- slidge_whatsapp/media/media.go +21 -11
- slidge_whatsapp/session.go +73 -66
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +14 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +2 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +2 -7
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +8510 -5090
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +344 -150
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
- slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +36 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +76 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
- slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +27 -25
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +40 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +119 -37
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +29 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +74 -34
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +61 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +188 -152
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +444 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +118 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +78 -42
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +7 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.pb.go +983 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.proto +85 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.pb.go +197 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.proto +13 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.pb.go +279 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.proto +21 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.pb.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.proto +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.pb.go +313 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.proto +27 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.pb.go +1299 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.proto +112 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.pb.go +514 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.proto +47 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.pb.go +123 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.proto +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.pb.go +720 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.proto +59 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.pb.go +365 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.proto +33 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.pb.go +1238 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.proto +105 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +170 -15
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +184 -89
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +7428 -2151
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +373 -44
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +456 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +198 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +7 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.pb.go +800 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +72 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1344 -438
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +52 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +382 -78
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +563 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +25 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingfields.json +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingtoken.go +176 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +39 -21
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +261 -75
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +28 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +85 -43
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +86 -65
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +291 -167
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +155 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/10-chat-db-lid-migration-ts.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +107 -56
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +13 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +7 -8
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +47 -29
- slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +148 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
- slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
- slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +239 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +9 -0
- slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
- slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +3 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +16 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +2 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
- slidge_whatsapp/vendor/modules.txt +52 -13
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/METADATA +1 -1
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/RECORD +330 -184
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/WHEEL +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/LICENSE +0 -0
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.7.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
// Copyright 2014 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
// Package http2 implements the HTTP/2 protocol.
|
|
6
|
+
//
|
|
7
|
+
// This package is low-level and intended to be used directly by very
|
|
8
|
+
// few people. Most users will use it indirectly through the automatic
|
|
9
|
+
// use by the net/http package (from Go 1.6 and later).
|
|
10
|
+
// For use in earlier Go versions see ConfigureServer. (Transport support
|
|
11
|
+
// requires Go 1.6 or later)
|
|
12
|
+
//
|
|
13
|
+
// See https://http2.github.io/ for more information on HTTP/2.
|
|
14
|
+
//
|
|
15
|
+
// See https://http2.golang.org/ for a test server running this code.
|
|
16
|
+
package http2 // import "golang.org/x/net/http2"
|
|
17
|
+
|
|
18
|
+
import (
|
|
19
|
+
"bufio"
|
|
20
|
+
"context"
|
|
21
|
+
"crypto/tls"
|
|
22
|
+
"errors"
|
|
23
|
+
"fmt"
|
|
24
|
+
"net"
|
|
25
|
+
"net/http"
|
|
26
|
+
"os"
|
|
27
|
+
"sort"
|
|
28
|
+
"strconv"
|
|
29
|
+
"strings"
|
|
30
|
+
"sync"
|
|
31
|
+
"time"
|
|
32
|
+
|
|
33
|
+
"golang.org/x/net/http/httpguts"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
var (
|
|
37
|
+
VerboseLogs bool
|
|
38
|
+
logFrameWrites bool
|
|
39
|
+
logFrameReads bool
|
|
40
|
+
inTests bool
|
|
41
|
+
|
|
42
|
+
// Enabling extended CONNECT by causes browsers to attempt to use
|
|
43
|
+
// WebSockets-over-HTTP/2. This results in problems when the server's websocket
|
|
44
|
+
// package doesn't support extended CONNECT.
|
|
45
|
+
//
|
|
46
|
+
// Disable extended CONNECT by default for now.
|
|
47
|
+
//
|
|
48
|
+
// Issue #71128.
|
|
49
|
+
disableExtendedConnectProtocol = true
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
func init() {
|
|
53
|
+
e := os.Getenv("GODEBUG")
|
|
54
|
+
if strings.Contains(e, "http2debug=1") {
|
|
55
|
+
VerboseLogs = true
|
|
56
|
+
}
|
|
57
|
+
if strings.Contains(e, "http2debug=2") {
|
|
58
|
+
VerboseLogs = true
|
|
59
|
+
logFrameWrites = true
|
|
60
|
+
logFrameReads = true
|
|
61
|
+
}
|
|
62
|
+
if strings.Contains(e, "http2xconnect=1") {
|
|
63
|
+
disableExtendedConnectProtocol = false
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const (
|
|
68
|
+
// ClientPreface is the string that must be sent by new
|
|
69
|
+
// connections from clients.
|
|
70
|
+
ClientPreface = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
|
|
71
|
+
|
|
72
|
+
// SETTINGS_MAX_FRAME_SIZE default
|
|
73
|
+
// https://httpwg.org/specs/rfc7540.html#rfc.section.6.5.2
|
|
74
|
+
initialMaxFrameSize = 16384
|
|
75
|
+
|
|
76
|
+
// NextProtoTLS is the NPN/ALPN protocol negotiated during
|
|
77
|
+
// HTTP/2's TLS setup.
|
|
78
|
+
NextProtoTLS = "h2"
|
|
79
|
+
|
|
80
|
+
// https://httpwg.org/specs/rfc7540.html#SettingValues
|
|
81
|
+
initialHeaderTableSize = 4096
|
|
82
|
+
|
|
83
|
+
initialWindowSize = 65535 // 6.9.2 Initial Flow Control Window Size
|
|
84
|
+
|
|
85
|
+
defaultMaxReadFrameSize = 1 << 20
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
var (
|
|
89
|
+
clientPreface = []byte(ClientPreface)
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
type streamState int
|
|
93
|
+
|
|
94
|
+
// HTTP/2 stream states.
|
|
95
|
+
//
|
|
96
|
+
// See http://tools.ietf.org/html/rfc7540#section-5.1.
|
|
97
|
+
//
|
|
98
|
+
// For simplicity, the server code merges "reserved (local)" into
|
|
99
|
+
// "half-closed (remote)". This is one less state transition to track.
|
|
100
|
+
// The only downside is that we send PUSH_PROMISEs slightly less
|
|
101
|
+
// liberally than allowable. More discussion here:
|
|
102
|
+
// https://lists.w3.org/Archives/Public/ietf-http-wg/2016JulSep/0599.html
|
|
103
|
+
//
|
|
104
|
+
// "reserved (remote)" is omitted since the client code does not
|
|
105
|
+
// support server push.
|
|
106
|
+
const (
|
|
107
|
+
stateIdle streamState = iota
|
|
108
|
+
stateOpen
|
|
109
|
+
stateHalfClosedLocal
|
|
110
|
+
stateHalfClosedRemote
|
|
111
|
+
stateClosed
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
var stateName = [...]string{
|
|
115
|
+
stateIdle: "Idle",
|
|
116
|
+
stateOpen: "Open",
|
|
117
|
+
stateHalfClosedLocal: "HalfClosedLocal",
|
|
118
|
+
stateHalfClosedRemote: "HalfClosedRemote",
|
|
119
|
+
stateClosed: "Closed",
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
func (st streamState) String() string {
|
|
123
|
+
return stateName[st]
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Setting is a setting parameter: which setting it is, and its value.
|
|
127
|
+
type Setting struct {
|
|
128
|
+
// ID is which setting is being set.
|
|
129
|
+
// See https://httpwg.org/specs/rfc7540.html#SettingFormat
|
|
130
|
+
ID SettingID
|
|
131
|
+
|
|
132
|
+
// Val is the value.
|
|
133
|
+
Val uint32
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
func (s Setting) String() string {
|
|
137
|
+
return fmt.Sprintf("[%v = %d]", s.ID, s.Val)
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Valid reports whether the setting is valid.
|
|
141
|
+
func (s Setting) Valid() error {
|
|
142
|
+
// Limits and error codes from 6.5.2 Defined SETTINGS Parameters
|
|
143
|
+
switch s.ID {
|
|
144
|
+
case SettingEnablePush:
|
|
145
|
+
if s.Val != 1 && s.Val != 0 {
|
|
146
|
+
return ConnectionError(ErrCodeProtocol)
|
|
147
|
+
}
|
|
148
|
+
case SettingInitialWindowSize:
|
|
149
|
+
if s.Val > 1<<31-1 {
|
|
150
|
+
return ConnectionError(ErrCodeFlowControl)
|
|
151
|
+
}
|
|
152
|
+
case SettingMaxFrameSize:
|
|
153
|
+
if s.Val < 16384 || s.Val > 1<<24-1 {
|
|
154
|
+
return ConnectionError(ErrCodeProtocol)
|
|
155
|
+
}
|
|
156
|
+
case SettingEnableConnectProtocol:
|
|
157
|
+
if s.Val != 1 && s.Val != 0 {
|
|
158
|
+
return ConnectionError(ErrCodeProtocol)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return nil
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// A SettingID is an HTTP/2 setting as defined in
|
|
165
|
+
// https://httpwg.org/specs/rfc7540.html#iana-settings
|
|
166
|
+
type SettingID uint16
|
|
167
|
+
|
|
168
|
+
const (
|
|
169
|
+
SettingHeaderTableSize SettingID = 0x1
|
|
170
|
+
SettingEnablePush SettingID = 0x2
|
|
171
|
+
SettingMaxConcurrentStreams SettingID = 0x3
|
|
172
|
+
SettingInitialWindowSize SettingID = 0x4
|
|
173
|
+
SettingMaxFrameSize SettingID = 0x5
|
|
174
|
+
SettingMaxHeaderListSize SettingID = 0x6
|
|
175
|
+
SettingEnableConnectProtocol SettingID = 0x8
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
var settingName = map[SettingID]string{
|
|
179
|
+
SettingHeaderTableSize: "HEADER_TABLE_SIZE",
|
|
180
|
+
SettingEnablePush: "ENABLE_PUSH",
|
|
181
|
+
SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS",
|
|
182
|
+
SettingInitialWindowSize: "INITIAL_WINDOW_SIZE",
|
|
183
|
+
SettingMaxFrameSize: "MAX_FRAME_SIZE",
|
|
184
|
+
SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE",
|
|
185
|
+
SettingEnableConnectProtocol: "ENABLE_CONNECT_PROTOCOL",
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
func (s SettingID) String() string {
|
|
189
|
+
if v, ok := settingName[s]; ok {
|
|
190
|
+
return v
|
|
191
|
+
}
|
|
192
|
+
return fmt.Sprintf("UNKNOWN_SETTING_%d", uint16(s))
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// validWireHeaderFieldName reports whether v is a valid header field
|
|
196
|
+
// name (key). See httpguts.ValidHeaderName for the base rules.
|
|
197
|
+
//
|
|
198
|
+
// Further, http2 says:
|
|
199
|
+
//
|
|
200
|
+
// "Just as in HTTP/1.x, header field names are strings of ASCII
|
|
201
|
+
// characters that are compared in a case-insensitive
|
|
202
|
+
// fashion. However, header field names MUST be converted to
|
|
203
|
+
// lowercase prior to their encoding in HTTP/2. "
|
|
204
|
+
func validWireHeaderFieldName(v string) bool {
|
|
205
|
+
if len(v) == 0 {
|
|
206
|
+
return false
|
|
207
|
+
}
|
|
208
|
+
for _, r := range v {
|
|
209
|
+
if !httpguts.IsTokenRune(r) {
|
|
210
|
+
return false
|
|
211
|
+
}
|
|
212
|
+
if 'A' <= r && r <= 'Z' {
|
|
213
|
+
return false
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return true
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
func httpCodeString(code int) string {
|
|
220
|
+
switch code {
|
|
221
|
+
case 200:
|
|
222
|
+
return "200"
|
|
223
|
+
case 404:
|
|
224
|
+
return "404"
|
|
225
|
+
}
|
|
226
|
+
return strconv.Itoa(code)
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// from pkg io
|
|
230
|
+
type stringWriter interface {
|
|
231
|
+
WriteString(s string) (n int, err error)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// A closeWaiter is like a sync.WaitGroup but only goes 1 to 0 (open to closed).
|
|
235
|
+
type closeWaiter chan struct{}
|
|
236
|
+
|
|
237
|
+
// Init makes a closeWaiter usable.
|
|
238
|
+
// It exists because so a closeWaiter value can be placed inside a
|
|
239
|
+
// larger struct and have the Mutex and Cond's memory in the same
|
|
240
|
+
// allocation.
|
|
241
|
+
func (cw *closeWaiter) Init() {
|
|
242
|
+
*cw = make(chan struct{})
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// Close marks the closeWaiter as closed and unblocks any waiters.
|
|
246
|
+
func (cw closeWaiter) Close() {
|
|
247
|
+
close(cw)
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Wait waits for the closeWaiter to become closed.
|
|
251
|
+
func (cw closeWaiter) Wait() {
|
|
252
|
+
<-cw
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// bufferedWriter is a buffered writer that writes to w.
|
|
256
|
+
// Its buffered writer is lazily allocated as needed, to minimize
|
|
257
|
+
// idle memory usage with many connections.
|
|
258
|
+
type bufferedWriter struct {
|
|
259
|
+
_ incomparable
|
|
260
|
+
group synctestGroupInterface // immutable
|
|
261
|
+
conn net.Conn // immutable
|
|
262
|
+
bw *bufio.Writer // non-nil when data is buffered
|
|
263
|
+
byteTimeout time.Duration // immutable, WriteByteTimeout
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
func newBufferedWriter(group synctestGroupInterface, conn net.Conn, timeout time.Duration) *bufferedWriter {
|
|
267
|
+
return &bufferedWriter{
|
|
268
|
+
group: group,
|
|
269
|
+
conn: conn,
|
|
270
|
+
byteTimeout: timeout,
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// bufWriterPoolBufferSize is the size of bufio.Writer's
|
|
275
|
+
// buffers created using bufWriterPool.
|
|
276
|
+
//
|
|
277
|
+
// TODO: pick a less arbitrary value? this is a bit under
|
|
278
|
+
// (3 x typical 1500 byte MTU) at least. Other than that,
|
|
279
|
+
// not much thought went into it.
|
|
280
|
+
const bufWriterPoolBufferSize = 4 << 10
|
|
281
|
+
|
|
282
|
+
var bufWriterPool = sync.Pool{
|
|
283
|
+
New: func() interface{} {
|
|
284
|
+
return bufio.NewWriterSize(nil, bufWriterPoolBufferSize)
|
|
285
|
+
},
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
func (w *bufferedWriter) Available() int {
|
|
289
|
+
if w.bw == nil {
|
|
290
|
+
return bufWriterPoolBufferSize
|
|
291
|
+
}
|
|
292
|
+
return w.bw.Available()
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
func (w *bufferedWriter) Write(p []byte) (n int, err error) {
|
|
296
|
+
if w.bw == nil {
|
|
297
|
+
bw := bufWriterPool.Get().(*bufio.Writer)
|
|
298
|
+
bw.Reset((*bufferedWriterTimeoutWriter)(w))
|
|
299
|
+
w.bw = bw
|
|
300
|
+
}
|
|
301
|
+
return w.bw.Write(p)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
func (w *bufferedWriter) Flush() error {
|
|
305
|
+
bw := w.bw
|
|
306
|
+
if bw == nil {
|
|
307
|
+
return nil
|
|
308
|
+
}
|
|
309
|
+
err := bw.Flush()
|
|
310
|
+
bw.Reset(nil)
|
|
311
|
+
bufWriterPool.Put(bw)
|
|
312
|
+
w.bw = nil
|
|
313
|
+
return err
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
type bufferedWriterTimeoutWriter bufferedWriter
|
|
317
|
+
|
|
318
|
+
func (w *bufferedWriterTimeoutWriter) Write(p []byte) (n int, err error) {
|
|
319
|
+
return writeWithByteTimeout(w.group, w.conn, w.byteTimeout, p)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// writeWithByteTimeout writes to conn.
|
|
323
|
+
// If more than timeout passes without any bytes being written to the connection,
|
|
324
|
+
// the write fails.
|
|
325
|
+
func writeWithByteTimeout(group synctestGroupInterface, conn net.Conn, timeout time.Duration, p []byte) (n int, err error) {
|
|
326
|
+
if timeout <= 0 {
|
|
327
|
+
return conn.Write(p)
|
|
328
|
+
}
|
|
329
|
+
for {
|
|
330
|
+
var now time.Time
|
|
331
|
+
if group == nil {
|
|
332
|
+
now = time.Now()
|
|
333
|
+
} else {
|
|
334
|
+
now = group.Now()
|
|
335
|
+
}
|
|
336
|
+
conn.SetWriteDeadline(now.Add(timeout))
|
|
337
|
+
nn, err := conn.Write(p[n:])
|
|
338
|
+
n += nn
|
|
339
|
+
if n == len(p) || nn == 0 || !errors.Is(err, os.ErrDeadlineExceeded) {
|
|
340
|
+
// Either we finished the write, made no progress, or hit the deadline.
|
|
341
|
+
// Whichever it is, we're done now.
|
|
342
|
+
conn.SetWriteDeadline(time.Time{})
|
|
343
|
+
return n, err
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
func mustUint31(v int32) uint32 {
|
|
349
|
+
if v < 0 || v > 2147483647 {
|
|
350
|
+
panic("out of range")
|
|
351
|
+
}
|
|
352
|
+
return uint32(v)
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// bodyAllowedForStatus reports whether a given response status code
|
|
356
|
+
// permits a body. See RFC 7230, section 3.3.
|
|
357
|
+
func bodyAllowedForStatus(status int) bool {
|
|
358
|
+
switch {
|
|
359
|
+
case status >= 100 && status <= 199:
|
|
360
|
+
return false
|
|
361
|
+
case status == 204:
|
|
362
|
+
return false
|
|
363
|
+
case status == 304:
|
|
364
|
+
return false
|
|
365
|
+
}
|
|
366
|
+
return true
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
type httpError struct {
|
|
370
|
+
_ incomparable
|
|
371
|
+
msg string
|
|
372
|
+
timeout bool
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
func (e *httpError) Error() string { return e.msg }
|
|
376
|
+
func (e *httpError) Timeout() bool { return e.timeout }
|
|
377
|
+
func (e *httpError) Temporary() bool { return true }
|
|
378
|
+
|
|
379
|
+
var errTimeout error = &httpError{msg: "http2: timeout awaiting response headers", timeout: true}
|
|
380
|
+
|
|
381
|
+
type connectionStater interface {
|
|
382
|
+
ConnectionState() tls.ConnectionState
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
var sorterPool = sync.Pool{New: func() interface{} { return new(sorter) }}
|
|
386
|
+
|
|
387
|
+
type sorter struct {
|
|
388
|
+
v []string // owned by sorter
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
func (s *sorter) Len() int { return len(s.v) }
|
|
392
|
+
func (s *sorter) Swap(i, j int) { s.v[i], s.v[j] = s.v[j], s.v[i] }
|
|
393
|
+
func (s *sorter) Less(i, j int) bool { return s.v[i] < s.v[j] }
|
|
394
|
+
|
|
395
|
+
// Keys returns the sorted keys of h.
|
|
396
|
+
//
|
|
397
|
+
// The returned slice is only valid until s used again or returned to
|
|
398
|
+
// its pool.
|
|
399
|
+
func (s *sorter) Keys(h http.Header) []string {
|
|
400
|
+
keys := s.v[:0]
|
|
401
|
+
for k := range h {
|
|
402
|
+
keys = append(keys, k)
|
|
403
|
+
}
|
|
404
|
+
s.v = keys
|
|
405
|
+
sort.Sort(s)
|
|
406
|
+
return keys
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
func (s *sorter) SortStrings(ss []string) {
|
|
410
|
+
// Our sorter works on s.v, which sorter owns, so
|
|
411
|
+
// stash it away while we sort the user's buffer.
|
|
412
|
+
save := s.v
|
|
413
|
+
s.v = ss
|
|
414
|
+
sort.Sort(s)
|
|
415
|
+
s.v = save
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
// incomparable is a zero-width, non-comparable type. Adding it to a struct
|
|
419
|
+
// makes that struct also non-comparable, and generally doesn't add
|
|
420
|
+
// any size (as long as it's first).
|
|
421
|
+
type incomparable [0]func()
|
|
422
|
+
|
|
423
|
+
// synctestGroupInterface is the methods of synctestGroup used by Server and Transport.
|
|
424
|
+
// It's defined as an interface here to let us keep synctestGroup entirely test-only
|
|
425
|
+
// and not a part of non-test builds.
|
|
426
|
+
type synctestGroupInterface interface {
|
|
427
|
+
Join()
|
|
428
|
+
Now() time.Time
|
|
429
|
+
NewTimer(d time.Duration) timer
|
|
430
|
+
AfterFunc(d time.Duration, f func()) timer
|
|
431
|
+
ContextWithTimeout(ctx context.Context, d time.Duration) (context.Context, context.CancelFunc)
|
|
432
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// Copyright 2014 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package http2
|
|
6
|
+
|
|
7
|
+
import (
|
|
8
|
+
"errors"
|
|
9
|
+
"io"
|
|
10
|
+
"sync"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
// pipe is a goroutine-safe io.Reader/io.Writer pair. It's like
|
|
14
|
+
// io.Pipe except there are no PipeReader/PipeWriter halves, and the
|
|
15
|
+
// underlying buffer is an interface. (io.Pipe is always unbuffered)
|
|
16
|
+
type pipe struct {
|
|
17
|
+
mu sync.Mutex
|
|
18
|
+
c sync.Cond // c.L lazily initialized to &p.mu
|
|
19
|
+
b pipeBuffer // nil when done reading
|
|
20
|
+
unread int // bytes unread when done
|
|
21
|
+
err error // read error once empty. non-nil means closed.
|
|
22
|
+
breakErr error // immediate read error (caller doesn't see rest of b)
|
|
23
|
+
donec chan struct{} // closed on error
|
|
24
|
+
readFn func() // optional code to run in Read before error
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
type pipeBuffer interface {
|
|
28
|
+
Len() int
|
|
29
|
+
io.Writer
|
|
30
|
+
io.Reader
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// setBuffer initializes the pipe buffer.
|
|
34
|
+
// It has no effect if the pipe is already closed.
|
|
35
|
+
func (p *pipe) setBuffer(b pipeBuffer) {
|
|
36
|
+
p.mu.Lock()
|
|
37
|
+
defer p.mu.Unlock()
|
|
38
|
+
if p.err != nil || p.breakErr != nil {
|
|
39
|
+
return
|
|
40
|
+
}
|
|
41
|
+
p.b = b
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
func (p *pipe) Len() int {
|
|
45
|
+
p.mu.Lock()
|
|
46
|
+
defer p.mu.Unlock()
|
|
47
|
+
if p.b == nil {
|
|
48
|
+
return p.unread
|
|
49
|
+
}
|
|
50
|
+
return p.b.Len()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Read waits until data is available and copies bytes
|
|
54
|
+
// from the buffer into p.
|
|
55
|
+
func (p *pipe) Read(d []byte) (n int, err error) {
|
|
56
|
+
p.mu.Lock()
|
|
57
|
+
defer p.mu.Unlock()
|
|
58
|
+
if p.c.L == nil {
|
|
59
|
+
p.c.L = &p.mu
|
|
60
|
+
}
|
|
61
|
+
for {
|
|
62
|
+
if p.breakErr != nil {
|
|
63
|
+
return 0, p.breakErr
|
|
64
|
+
}
|
|
65
|
+
if p.b != nil && p.b.Len() > 0 {
|
|
66
|
+
return p.b.Read(d)
|
|
67
|
+
}
|
|
68
|
+
if p.err != nil {
|
|
69
|
+
if p.readFn != nil {
|
|
70
|
+
p.readFn() // e.g. copy trailers
|
|
71
|
+
p.readFn = nil // not sticky like p.err
|
|
72
|
+
}
|
|
73
|
+
p.b = nil
|
|
74
|
+
return 0, p.err
|
|
75
|
+
}
|
|
76
|
+
p.c.Wait()
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
var (
|
|
81
|
+
errClosedPipeWrite = errors.New("write on closed buffer")
|
|
82
|
+
errUninitializedPipeWrite = errors.New("write on uninitialized buffer")
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
// Write copies bytes from p into the buffer and wakes a reader.
|
|
86
|
+
// It is an error to write more data than the buffer can hold.
|
|
87
|
+
func (p *pipe) Write(d []byte) (n int, err error) {
|
|
88
|
+
p.mu.Lock()
|
|
89
|
+
defer p.mu.Unlock()
|
|
90
|
+
if p.c.L == nil {
|
|
91
|
+
p.c.L = &p.mu
|
|
92
|
+
}
|
|
93
|
+
defer p.c.Signal()
|
|
94
|
+
if p.err != nil || p.breakErr != nil {
|
|
95
|
+
return 0, errClosedPipeWrite
|
|
96
|
+
}
|
|
97
|
+
// pipe.setBuffer is never invoked, leaving the buffer uninitialized.
|
|
98
|
+
// We shouldn't try to write to an uninitialized pipe,
|
|
99
|
+
// but returning an error is better than panicking.
|
|
100
|
+
if p.b == nil {
|
|
101
|
+
return 0, errUninitializedPipeWrite
|
|
102
|
+
}
|
|
103
|
+
return p.b.Write(d)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// CloseWithError causes the next Read (waking up a current blocked
|
|
107
|
+
// Read if needed) to return the provided err after all data has been
|
|
108
|
+
// read.
|
|
109
|
+
//
|
|
110
|
+
// The error must be non-nil.
|
|
111
|
+
func (p *pipe) CloseWithError(err error) { p.closeWithError(&p.err, err, nil) }
|
|
112
|
+
|
|
113
|
+
// BreakWithError causes the next Read (waking up a current blocked
|
|
114
|
+
// Read if needed) to return the provided err immediately, without
|
|
115
|
+
// waiting for unread data.
|
|
116
|
+
func (p *pipe) BreakWithError(err error) { p.closeWithError(&p.breakErr, err, nil) }
|
|
117
|
+
|
|
118
|
+
// closeWithErrorAndCode is like CloseWithError but also sets some code to run
|
|
119
|
+
// in the caller's goroutine before returning the error.
|
|
120
|
+
func (p *pipe) closeWithErrorAndCode(err error, fn func()) { p.closeWithError(&p.err, err, fn) }
|
|
121
|
+
|
|
122
|
+
func (p *pipe) closeWithError(dst *error, err error, fn func()) {
|
|
123
|
+
if err == nil {
|
|
124
|
+
panic("err must be non-nil")
|
|
125
|
+
}
|
|
126
|
+
p.mu.Lock()
|
|
127
|
+
defer p.mu.Unlock()
|
|
128
|
+
if p.c.L == nil {
|
|
129
|
+
p.c.L = &p.mu
|
|
130
|
+
}
|
|
131
|
+
defer p.c.Signal()
|
|
132
|
+
if *dst != nil {
|
|
133
|
+
// Already been done.
|
|
134
|
+
return
|
|
135
|
+
}
|
|
136
|
+
p.readFn = fn
|
|
137
|
+
if dst == &p.breakErr {
|
|
138
|
+
if p.b != nil {
|
|
139
|
+
p.unread += p.b.Len()
|
|
140
|
+
}
|
|
141
|
+
p.b = nil
|
|
142
|
+
}
|
|
143
|
+
*dst = err
|
|
144
|
+
p.closeDoneLocked()
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// requires p.mu be held.
|
|
148
|
+
func (p *pipe) closeDoneLocked() {
|
|
149
|
+
if p.donec == nil {
|
|
150
|
+
return
|
|
151
|
+
}
|
|
152
|
+
// Close if unclosed. This isn't racy since we always
|
|
153
|
+
// hold p.mu while closing.
|
|
154
|
+
select {
|
|
155
|
+
case <-p.donec:
|
|
156
|
+
default:
|
|
157
|
+
close(p.donec)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Err returns the error (if any) first set by BreakWithError or CloseWithError.
|
|
162
|
+
func (p *pipe) Err() error {
|
|
163
|
+
p.mu.Lock()
|
|
164
|
+
defer p.mu.Unlock()
|
|
165
|
+
if p.breakErr != nil {
|
|
166
|
+
return p.breakErr
|
|
167
|
+
}
|
|
168
|
+
return p.err
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Done returns a channel which is closed if and when this pipe is closed
|
|
172
|
+
// with CloseWithError.
|
|
173
|
+
func (p *pipe) Done() <-chan struct{} {
|
|
174
|
+
p.mu.Lock()
|
|
175
|
+
defer p.mu.Unlock()
|
|
176
|
+
if p.donec == nil {
|
|
177
|
+
p.donec = make(chan struct{})
|
|
178
|
+
if p.err != nil || p.breakErr != nil {
|
|
179
|
+
// Already hit an error.
|
|
180
|
+
p.closeDoneLocked()
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return p.donec
|
|
184
|
+
}
|