slidge-whatsapp 0.2.5__cp313-cp313-manylinux_2_36_aarch64.whl → 0.2.6__cp313-cp313-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.

Files changed (320) hide show
  1. slidge_whatsapp/config.py +3 -0
  2. slidge_whatsapp/event.go +23 -24
  3. slidge_whatsapp/gateway.go +13 -9
  4. slidge_whatsapp/gateway.py +2 -2
  5. slidge_whatsapp/generated/_whatsapp.cpython-313-aarch64-linux-gnu.h +181 -181
  6. slidge_whatsapp/generated/_whatsapp.cpython-313-aarch64-linux-gnu.so +0 -0
  7. slidge_whatsapp/generated/build.py +155 -155
  8. slidge_whatsapp/generated/whatsapp.c +1507 -1507
  9. slidge_whatsapp/generated/whatsapp.go +907 -907
  10. slidge_whatsapp/generated/whatsapp.py +1318 -1318
  11. slidge_whatsapp/generated/whatsapp_go.h +181 -181
  12. slidge_whatsapp/go.mod +15 -12
  13. slidge_whatsapp/go.sum +41 -29
  14. slidge_whatsapp/media/media.go +16 -10
  15. slidge_whatsapp/session.go +73 -66
  16. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
  17. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
  18. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
  19. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
  20. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +14 -1
  21. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +2 -2
  22. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
  23. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
  24. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
  25. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
  26. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +2 -7
  27. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
  28. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +8510 -5090
  29. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +344 -150
  30. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
  31. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
  32. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
  33. slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
  34. slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
  35. slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
  36. slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
  37. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
  38. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
  39. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
  40. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
  41. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
  42. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
  43. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
  44. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
  45. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
  46. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
  47. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
  48. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
  49. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
  50. slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
  51. slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
  52. slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
  53. slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
  54. slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
  55. slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
  56. slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
  57. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
  58. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
  59. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
  60. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
  61. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
  62. slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
  63. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
  64. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
  65. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
  66. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
  67. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
  68. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
  69. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
  70. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
  71. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
  72. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
  73. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
  74. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
  75. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
  76. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
  77. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
  78. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
  79. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
  80. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
  81. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
  82. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
  83. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
  84. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
  85. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
  86. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
  87. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
  88. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +41 -0
  89. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
  90. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
  91. slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
  92. slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
  93. slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
  94. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
  95. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
  96. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
  97. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
  98. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
  99. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
  100. slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
  101. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
  102. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
  103. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
  104. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +27 -25
  105. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +3 -2
  106. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
  107. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +60 -15
  108. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +25 -9
  109. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +45 -19
  110. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +52 -28
  111. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +1 -0
  112. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +59 -29
  113. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +166 -146
  114. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +2 -2
  115. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
  116. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
  117. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +270 -111
  118. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +118 -31
  119. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +67 -36
  120. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +7 -4
  121. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
  122. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
  123. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +2 -1
  124. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
  125. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
  126. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
  127. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
  128. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +158 -15
  129. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +1 -0
  130. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
  131. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
  132. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
  133. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
  134. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +170 -84
  135. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +1 -1
  136. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
  137. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
  138. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
  139. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +6747 -2230
  140. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +294 -43
  141. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +456 -135
  142. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +14 -0
  143. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
  144. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
  145. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
  146. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
  147. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
  148. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
  149. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
  150. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
  151. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
  152. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1051 -382
  153. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +32 -0
  154. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
  155. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
  156. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +382 -78
  157. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +8 -0
  158. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +555 -9
  159. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +2 -0
  160. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +13 -3
  161. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +29 -19
  162. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +244 -73
  163. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +27 -16
  164. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
  165. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +85 -43
  166. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
  167. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +79 -61
  168. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
  169. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +291 -167
  170. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +153 -0
  171. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
  172. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
  173. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
  174. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
  175. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
  176. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
  177. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
  178. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
  179. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +105 -56
  180. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
  181. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +8 -0
  182. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
  183. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +7 -8
  184. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +17 -0
  185. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
  186. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
  187. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +45 -29
  188. slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
  189. slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
  190. slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
  191. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
  192. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
  193. slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
  194. slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
  195. slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  196. slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
  197. slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
  198. slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
  199. slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
  200. slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
  201. slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
  202. slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
  203. slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
  204. slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
  205. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
  206. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
  207. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
  208. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
  209. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
  210. slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
  211. slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
  212. slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
  213. slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
  214. slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
  215. slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
  216. slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
  217. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
  218. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
  219. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
  220. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
  221. slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
  222. slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
  223. slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
  224. slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
  225. slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
  226. slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
  227. slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
  228. slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
  229. slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
  230. slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
  231. slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
  232. slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
  233. slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
  234. slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
  235. slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
  236. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
  237. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
  238. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
  239. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +148 -1
  240. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
  241. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
  242. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
  243. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
  244. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
  245. slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
  246. slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
  247. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +239 -0
  248. slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +9 -0
  249. slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
  250. slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
  251. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
  252. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
  253. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
  254. slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
  255. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
  256. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  257. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
  258. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  259. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
  260. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
  261. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
  262. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
  263. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
  264. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
  265. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
  266. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
  267. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
  268. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  269. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
  270. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
  271. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  272. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
  273. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
  274. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
  275. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
  276. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
  277. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
  278. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  279. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  280. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
  281. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +3 -0
  282. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +16 -0
  283. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
  284. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
  285. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
  286. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +2 -0
  287. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
  288. slidge_whatsapp/vendor/modules.txt +38 -13
  289. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.6.dist-info}/METADATA +1 -1
  290. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.6.dist-info}/RECORD +293 -180
  291. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.6.dist-info}/WHEEL +1 -1
  292. slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
  293. slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
  294. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
  295. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
  296. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
  297. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
  298. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
  299. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
  300. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
  301. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
  302. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
  303. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
  304. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
  305. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
  306. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
  307. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
  308. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
  309. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
  310. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
  311. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
  312. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
  313. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
  314. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
  315. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
  316. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
  317. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
  318. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
  319. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.6.dist-info}/LICENSE +0 -0
  320. {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.2.6.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
+ }