You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/06/20 05:57:01 UTC

[incubator-nuttx-apps] 03/05: webclient: Make webclient_get_tunnel returns void

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git

commit fca5b186b172cca83b1059fd1d56088ae1b80170
Author: YAMAMOTO Takashi <ya...@midokura.com>
AuthorDate: Fri Jun 17 15:03:46 2022 +0900

    webclient: Make webclient_get_tunnel returns void
    
    As it does never fail.
---
 include/netutils/webclient.h   |  4 +-
 netutils/webclient/webclient.c | 83 ++++++++++++++++++++----------------------
 2 files changed, 41 insertions(+), 46 deletions(-)

diff --git a/include/netutils/webclient.h b/include/netutils/webclient.h
index 33aa4ac93..8bd78efce 100644
--- a/include/netutils/webclient.h
+++ b/include/netutils/webclient.h
@@ -561,8 +561,8 @@ void webclient_set_static_body(FAR struct webclient_context *ctx,
                                size_t bodylen);
 int webclient_get_poll_info(FAR struct webclient_context *ctx,
                             FAR struct webclient_poll_info *info);
-int webclient_get_tunnel(FAR struct webclient_context *ctx,
-                         FAR struct webclient_conn_s **connp);
+void webclient_get_tunnel(FAR struct webclient_context *ctx,
+                          FAR struct webclient_conn_s **connp);
 
 #undef EXTERN
 #ifdef __cplusplus
diff --git a/netutils/webclient/webclient.c b/netutils/webclient/webclient.c
index 1bcdd3817..d2d7ef261 100644
--- a/netutils/webclient/webclient.c
+++ b/netutils/webclient/webclient.c
@@ -1445,54 +1445,51 @@ int webclient_perform(FAR struct webclient_context *ctx)
                 {
                   FAR struct webclient_conn_s *tunnel_conn;
 
-                  ret = webclient_get_tunnel(ws->tunnel, &tunnel_conn);
-                  if (ret == 0)
+                  webclient_get_tunnel(ws->tunnel, &tunnel_conn);
+                  DEBUGASSERT(tunnel_conn != NULL);
+                  DEBUGASSERT(!tunnel_conn->tls);
+                  free(ws->tunnel);
+                  ws->tunnel = NULL;
+
+                  if (conn->tls)
                     {
-                      DEBUGASSERT(tunnel_conn != NULL);
-                      DEBUGASSERT(!tunnel_conn->tls);
-                      free(ws->tunnel);
-                      ws->tunnel = NULL;
+                      /* Revisit: tunnel_conn here should have
+                       * timeout configured already.
+                       * Configuring it again here is redundant.
+                       */
 
-                      if (conn->tls)
+                      ret = tls_ops->init_connection(tls_ctx,
+                                                     tunnel_conn,
+                                                     ws->target.hostname,
+                                                     ctx->timeout_sec,
+                                                     &conn->tls_conn);
+                      if (ret == 0)
                         {
-                          /* Revisit: tunnel_conn here should have
-                           * timeout configured already.
-                           * Configuring it again here is redundant.
+                          /* Note: tunnel_conn has been consumed by
+                           * tls_ops->init_connection
                            */
 
-                          ret = tls_ops->init_connection(tls_ctx,
-                                                         tunnel_conn,
-                                                         ws->target.hostname,
-                                                         ctx->timeout_sec,
-                                                         &conn->tls_conn);
-                          if (ret == 0)
-                            {
-                              /* Note: tunnel_conn has been consumed by
-                               * tls_ops->init_connection
-                               */
-
-                              ws->need_conn_close = true;
-                            }
-                          else
-                            {
-                              /* Note: restarting tls_ops->init_connection
-                               * is not implemented
-                               */
-
-                              DEBUGASSERT(ret != -EAGAIN &&
-                                          ret != -EINPROGRESS &&
-                                          ret != -EALREADY);
-                              conn_close(ctx, tunnel_conn);
-                              free(tunnel_conn);
-                            }
+                          ws->need_conn_close = true;
                         }
                       else
                         {
-                          conn->sockfd = tunnel_conn->sockfd;
-                          ws->need_conn_close = true;
+                          /* Note: restarting tls_ops->init_connection
+                           * is not implemented
+                           */
+
+                          DEBUGASSERT(ret != -EAGAIN &&
+                                      ret != -EINPROGRESS &&
+                                      ret != -EALREADY);
+                          conn_close(ctx, tunnel_conn);
                           free(tunnel_conn);
                         }
                     }
+                  else
+                    {
+                      conn->sockfd = tunnel_conn->sockfd;
+                      ws->need_conn_close = true;
+                      free(tunnel_conn);
+                    }
                 }
             }
           else if (conn->tls)
@@ -2486,16 +2483,16 @@ int webclient_get_poll_info(FAR struct webclient_context *ctx,
  *   the tunneled connection.
  *
  *   This function should be used exactly once after a successful
- *   call of webclient_perform with WEBCLIENT_FLAG_TUNNEL.
+ *   call of webclient_perform with WEBCLIENT_FLAG_TUNNEL, with
+ *   http_status 2xx.
  *
  *   This function also disposes the given webclient_context.
- *   The context will be invalid after the successful call of this
- *   function.
+ *   The context will be invalid after a call of this function.
  *
  ****************************************************************************/
 
-int webclient_get_tunnel(FAR struct webclient_context *ctx,
-                         FAR struct webclient_conn_s **connp)
+void webclient_get_tunnel(FAR struct webclient_context *ctx,
+                          FAR struct webclient_conn_s **connp)
 {
   struct wget_s *ws;
   struct webclient_conn_s *conn;
@@ -2510,6 +2507,4 @@ int webclient_get_tunnel(FAR struct webclient_context *ctx,
   ws->conn = NULL;
   free_ws(ws);
   _SET_STATE(ctx, WEBCLIENT_CONTEXT_STATE_DONE);
-
-  return 0;
 }