Esempio n. 1
0
  /**
   * Returns {@code true} if and only if the connection can remain open and thus 'kept alive'. This
   * methods respects the value of the {@code "Connection"} header first and then the return value
   * of {@link HttpVersion#isKeepAliveDefault()}.
   */
  public static boolean isKeepAlive(HttpMessage message) {
    String connection = message.headers().get(Names.CONNECTION);
    if (connection != null && equalsIgnoreCase(Values.CLOSE, connection)) {
      return false;
    }

    if (message.getProtocolVersion().isKeepAliveDefault()) {
      return !equalsIgnoreCase(Values.CLOSE, connection);
    } else {
      return equalsIgnoreCase(Values.KEEP_ALIVE, connection);
    }
  }
Esempio n. 2
0
 /**
  * Sets the value of the {@code "Connection"} header depending on the protocol version of the
  * specified message. This getMethod sets or removes the {@code "Connection"} header depending on
  * what the default keep alive mode of the message's protocol version is, as specified by {@link
  * HttpVersion#isKeepAliveDefault()}.
  *
  * <ul>
  *   <li>If the connection is kept alive by default:
  *       <ul>
  *         <li>set to {@code "close"} if {@code keepAlive} is {@code false}.
  *         <li>remove otherwise.
  *       </ul>
  *   <li>If the connection is closed by default:
  *       <ul>
  *         <li>set to {@code "keep-alive"} if {@code keepAlive} is {@code true}.
  *         <li>remove otherwise.
  *       </ul>
  * </ul>
  */
 public static void setKeepAlive(HttpMessage message, boolean keepAlive) {
   HttpHeaders h = message.headers();
   if (message.getProtocolVersion().isKeepAliveDefault()) {
     if (keepAlive) {
       h.remove(Names.CONNECTION);
     } else {
       h.set(Names.CONNECTION, Values.CLOSE);
     }
   } else {
     if (keepAlive) {
       h.set(Names.CONNECTION, Values.KEEP_ALIVE);
     } else {
       h.remove(Names.CONNECTION);
     }
   }
 }
Esempio n. 3
0
  /**
   * Returns {@code true} if and only if the specified message contains the {@code "Expect:
   * 100-continue"} header.
   */
  public static boolean is100ContinueExpected(HttpMessage message) {
    // Expect: 100-continue is for requests only.
    if (!(message instanceof HttpRequest)) {
      return false;
    }

    // It works only on HTTP/1.1 or later.
    if (message.getProtocolVersion().compareTo(HttpVersion.HTTP_1_1) < 0) {
      return false;
    }

    // In most cases, there will be one or zero 'Expect' header.
    String value = message.headers().get(Names.EXPECT);
    if (value == null) {
      return false;
    }
    if (equalsIgnoreCase(Values.CONTINUE, value)) {
      return true;
    }

    // Multiple 'Expect' headers.  Search through them.
    return message.headers().contains(Names.EXPECT, Values.CONTINUE, true);
  }
Esempio n. 4
0
 public static boolean isKeepAlive(HttpMessage message) {
   return HttpHeaders.isKeepAlive(message)
       && message.getProtocolVersion().equals(HttpVersion.HTTP_1_1);
 }