Esempio n. 1
0
 Action <Frame, Exception> HandleExpectContinue(Action <Frame, Exception> continuation)
 {
     string[] expect;
     if (_httpVersion.Equals("HTTP/1.1") &&
         _requestHeaders.TryGetValue("Expect", out expect) &&
         (expect.FirstOrDefault() ?? "").Equals("100-continue", StringComparison.OrdinalIgnoreCase))
     {
         return((frame, error) =>
         {
             if (_resultStarted)
             {
                 continuation.Invoke(frame, null);
             }
             else
             {
                 var bytes = Encoding.Default.GetBytes("HTTP/1.1 100 Continue\r\n\r\n");
                 var isasync =
                     _context.Write(new ArraySegment <byte>(bytes)) &&
                     _context.Flush(() => continuation(frame, null));
                 if (!isasync)
                 {
                     continuation.Invoke(frame, null);
                 }
             }
         });
     }
     return(continuation);
 }