handlers.go 746 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package spdystream
  2. import (
  3. "io"
  4. "net/http"
  5. )
  6. // MirrorStreamHandler mirrors all streams.
  7. func MirrorStreamHandler(stream *Stream) {
  8. replyErr := stream.SendReply(http.Header{}, false)
  9. if replyErr != nil {
  10. return
  11. }
  12. go func() {
  13. io.Copy(stream, stream)
  14. stream.Close()
  15. }()
  16. go func() {
  17. for {
  18. header, receiveErr := stream.ReceiveHeader()
  19. if receiveErr != nil {
  20. return
  21. }
  22. sendErr := stream.SendHeader(header, false)
  23. if sendErr != nil {
  24. return
  25. }
  26. }
  27. }()
  28. }
  29. // NoopStreamHandler does nothing when stream connects, most
  30. // likely used with RejectAuthHandler which will not allow any
  31. // streams to make it to the stream handler.
  32. func NoOpStreamHandler(stream *Stream) {
  33. stream.SendReply(http.Header{}, false)
  34. }