From patchwork Tue Feb 26 10:14:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wojciech Michna X-Patchwork-Id: 1048218 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=googlegroups.com (client-ip=2607:f8b0:4864:20::23a; helo=mail-oi1-x23a.google.com; envelope-from=swupdate+bncbaabbfvd2trqkgqe6yxliky@googlegroups.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=assaabloy.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.b="QCTwuMQ6"; dkim-atps=neutral Received: from mail-oi1-x23a.google.com (mail-oi1-x23a.google.com [IPv6:2607:f8b0:4864:20::23a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 447vnQ5cHRz9s2R for ; Tue, 26 Feb 2019 21:14:49 +1100 (AEDT) Received: by mail-oi1-x23a.google.com with SMTP id h127sf5335187oib.20 for ; Tue, 26 Feb 2019 02:14:49 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1551176086; cv=pass; d=google.com; s=arc-20160816; b=HVbjNOkzvXvYkktVgCjnBVB+uxmRocL4jk0+pet/MPhSpQkFUJWmNrjq0hSLyogs2p 97KNbaHOM184fDDV+mllsag6hGkpvOXkLIQ+AlQjlreR5esJQ8jeDWxx2vJxZ3ZG20Yz G2Ssl/1mhedOAfT9ue0aXARTBRRY6iAqvFkLwkjw9672f8q7AP2G2eVf0pGXzD6wO9nk Ge0htm5szs8d8BcJY+c91s0rEJzvPrXLIOALCeZmI/ecA3XwmynfmZFqZ0vQIOAMwOer M83bQ9ospnleXJ2U161LgXI6HqnDQs4ROQAPC5hU/bDLX6co+iO4e5W3QkODPWKKlqHF sRlA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=P2aSERHH5Z8cqCORB8NVoNbiIFkckU1sc7F474qSEWQ=; b=yieAcPZoQKK4y3BShe2KDt1bAT7RxBtjFNMaptGzvV5uJ1dVXHXGoBeRZKOD1A2lE7 vt+vv6Zc7Nd9+vZwXxxRIFBx7FBekO93n5Gc2YSHvWqVA2EmZ+rhGseGYWdVDy9ELzrX Fh3EDapTR+KhXlqPPpoebjwa5qD35zfwl34z1zAKvjFPdv8SoYhf84q8CcpaHrYlQALP ckiz9q43rgiq0ZkjyXe69/ysJNM2ruP1xPe32a7B9aSsvlBWZgg5ZeC0c/zWuLzgubmE iPwOlRhhwkaOaYM+sogkpaMMe3ojIq1dOM7DxScLmXOSAzAh84SN8lfwINvAJLV6BVzr 5ilg== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@Assaabloy.onmicrosoft.com header.s=selector1-assaabloy-com header.b=Sn+ODuEd; spf=pass (google.com: domain of wojciech.michna@assaabloy.com designates 40.107.73.40 as permitted sender) smtp.mailfrom=Wojciech.Michna@assaabloy.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=assaabloy.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-subscribe:list-unsubscribe; bh=P2aSERHH5Z8cqCORB8NVoNbiIFkckU1sc7F474qSEWQ=; b=QCTwuMQ6B7CDGuDggLdBMOGOSII1z3qbhZgvo2Y6R6ja4dbmb74LxD9WpjibUd7pa9 0k+2UyeNiJJmL2YprN0x7lM4AmKRDfT+gBdilZz7iwZvJlUYecD2goLjIYgJgGy935Ya g5H+78mWidJRJ8XvFnU40WnDXsrWLS2T0r6a46su5jYe9mi5s4JVYjCR2drfRw8OINfY NvqEcGlh2FHzegf5Gf5ELgJzLamd1sTbADToqbCs26Ffbbo3Z+NzQ2ctPcaXriZg93ep uZAowcWoDLHFLfyiNweASM0xKVXK7K2UQIOmBJlRBeE3DJURgqFtYKbD4I15NbsR/SIY gDnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=P2aSERHH5Z8cqCORB8NVoNbiIFkckU1sc7F474qSEWQ=; b=esD6g/8/qw5LhP7UqA7nMA/J8cgYFbDEn/fR9NNWOV9+I3fEmixs494ciqIDnOQXHj EY3Cb92mD6JTDCO53E/YMeqTxFoxc2iwPDNGCgiHW8lYbwqMvu3vbSrl22eyXG/p2Vcz 28wmJG8lB5QBIf4Iakcoaj7hmnTQasRjD6mSFy2K9cvHjHCbbmVoxqE41lXfTlcp7IZP fl5jjuNKBR2VGOz1KLW0ahV4PxwWdGrvx9BjVMRiVdohQkAup2L47lAdDiBsfM6560PN muvt3fYQYGUpKGSrOyK8ZDCJGffcIezv6vyD4Yawp8N+ST4jgLdtJRKapvSoiMOJCuOB F3Qg== Sender: swupdate@googlegroups.com X-Gm-Message-State: AHQUAub7wj9toGjJwdU4xRczjAYAoLMKA8Ge5UtaOZX743q58y5na4No wIX14iGmySZBSFZxTujkOdk= X-Google-Smtp-Source: AHgI3IbiGSRl+ARnD7DSv6PtqydDGGZw8Q9bxQawL6a91Hz3GUw8ffH7gAbVSgdvgQc8D6xg9i49IA== X-Received: by 2002:a9d:6406:: with SMTP id h6mr14520422otl.238.1551176086537; Tue, 26 Feb 2019 02:14:46 -0800 (PST) X-BeenThere: swupdate@googlegroups.com Received: by 2002:aca:a80d:: with SMTP id r13ls679064oie.0.gmail; Tue, 26 Feb 2019 02:14:46 -0800 (PST) X-Received: by 2002:aca:4755:: with SMTP id u82mr13227741oia.23.1551176086221; Tue, 26 Feb 2019 02:14:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551176086; cv=none; d=google.com; s=arc-20160816; b=FR9bd6MofdIzLR1g6zmpZ09hMwwZdAbxnoiQCJy31j6PMpimu/Pw9dc5q1MC7q1OWI gDq7jfbKaKllLeV3FyLvxaFrHHHEJtbZMYBJpNqcgpqi7t5lOEa+pVhRHMh4tD3O5vwz hkCwxCI+ZLyuS1bMxBkPDsH5r/DeupluD7/q5t6pREZDDAHu5bqPmECRNFKqpDI99koX M82qDfJ+QqPFriNoZH88iAZ4aKbgAJsnVisY3a7EDB4KgxgR/JWn09HXyADjtv+YawPK 6LKz5J6qFV3yJpsnsrN/Hwnzk1aSCGTDGopHUOuG2FJmZ0InujwzPj45OSknrF1+YCOj 1e5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=Ygpp6EBXPTzyUD454Ki0pa9faRX3+x/ffAv1JT19Sb0=; b=kh+dDOpj/kWWf8C5vo5QXs4b6lHA0QTBLZzd/BshbaLslntr1ZnHdUKQPVAQ9FyjvI m+5P3NO2Jn9TNPYmS2anV8nhb2VosFof9P+TCNVAgCjigUapyzhBUC3pACq2noV0I9b4 Mm0nyy6rIsXpcevTozlcZBxNbc4Is/WpeRSP6vcug1X41PWxiK2avex7wWA/2IfsTihz mXWBZwdXoyZ2IjUREM8ie0hXQb/i5MFnAKuryBEL35CFnx/OQHth0J345d9pbHpErYGB 2QyY1916HbxHVeuFKrcgHxABEu7Ez0q6i4hzVPeWkmPKh2M+o+obUYMik8PgiH84ac5M /Muw== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@Assaabloy.onmicrosoft.com header.s=selector1-assaabloy-com header.b=Sn+ODuEd; spf=pass (google.com: domain of wojciech.michna@assaabloy.com designates 40.107.73.40 as permitted sender) smtp.mailfrom=Wojciech.Michna@assaabloy.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=assaabloy.com Received: from NAM05-DM3-obe.outbound.protection.outlook.com (mail-eopbgr730040.outbound.protection.outlook.com. [40.107.73.40]) by gmr-mx.google.com with ESMTPS id d128si13757oia.3.2019.02.26.02.14.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 26 Feb 2019 02:14:46 -0800 (PST) Received-SPF: pass (google.com: domain of wojciech.michna@assaabloy.com designates 40.107.73.40 as permitted sender) client-ip=40.107.73.40; Received: from CY4PR1001CA0025.namprd10.prod.outlook.com (2603:10b6:910:3d::38) by CY1PR10MB0572.namprd10.prod.outlook.com (2a01:111:e400:5321::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.18; Tue, 26 Feb 2019 10:14:44 +0000 Received: from BL2NAM02FT059.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::207) by CY4PR1001CA0025.outlook.office365.com (2603:10b6:910:3d::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.18 via Frontend Transport; Tue, 26 Feb 2019 10:14:44 +0000 Received-SPF: Pass (protection.outlook.com: domain of assaabloy.com designates 141.81.165.41 as permitted sender) receiver=protection.outlook.com; client-ip=141.81.165.41; helo=assaabloy.com; Received: from assaabloy.com (141.81.165.41) by BL2NAM02FT059.mail.protection.outlook.com (10.152.76.247) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1643.11 via Frontend Transport; Tue, 26 Feb 2019 10:14:43 +0000 Received: from DEMEESEX0002.ad.global (10.230.40.16) by DEMEESEX0010.ad.global (10.230.103.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1466.3; Tue, 26 Feb 2019 11:14:25 +0100 Received: from DEMEESEX0013.ad.global (10.230.40.48) by DEMEESEX0002.ad.global (10.230.40.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1466.3; Tue, 26 Feb 2019 11:14:25 +0100 Received: from PLKRAL0060.ad.global (10.230.48.241) by DEMEESEX0013.ad.global (10.230.40.48) with Microsoft SMTP Server id 15.1.1466.3 via Frontend Transport; Tue, 26 Feb 2019 11:14:25 +0100 From: Wojciech Michna To: CC: Wojciech Michna , Szczypta Marek Subject: [swupdate] [PATCH] Add low speed limit to suricatta requests Date: Tue, 26 Feb 2019 11:14:04 +0100 Message-ID: <20190226101404.7572-1-Wojciech.Michna@assaabloy.com> X-Mailer: git-send-email 2.20.1.windows.1 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:141.81.165.41; IPV:NLI; CTRY:SE; EFV:NLI; SFV:NSPM; SFS:(10009020)(346002)(376002)(39860400002)(396003)(136003)(2980300002)(199004)(189003)(77096007)(186003)(86362001)(22756006)(50226002)(8936002)(36756003)(356004)(8676002)(6666004)(126002)(2616005)(5660300002)(26005)(476003)(106466001)(336012)(6916009)(40036005)(486006)(508600001)(72206003)(71190400001)(2906002)(4326008)(2476003)(14444005)(246002)(84326002)(106002)(2870700001)(54906003)(316002)(1076003)(33964004)(107886003)(2351001)(305945005)(7636002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR10MB0572; H:assaabloy.com; FPR:; SPF:Pass; LANG:en; PTR:smtp.assaabloy.net; A:1; MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 44503ea1-b815-485c-a80c-08d69bd33a60 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4608103)(4709054)(2017052603328)(7153060)(49563074); SRVR:CY1PR10MB0572; X-MS-TrafficTypeDiagnostic: CY1PR10MB0572: X-Microsoft-Exchange-Diagnostics: 1; CY1PR10MB0572; 20:p5w6JNoCZWYTkI2Wt42pbIjoR+mCwolPHyESbBUFQSahAzLAWvLNCoiD7wVFvnoH3xZPVinUjynslyXoFImMiaBherv3mYmv7AnsdPEuacOjhgttmM4HP/MKMHPueHMtjpMOmSQZQQ6tYE152pYLJ/BZxcoOp5yrtMHcxXkb/HcpATavKuPIvi3ZZIneWS5f3MyeAd1rmgoI/ulOUs5ESbBs96dMgJbE83YDkpODYfu+ED70Dyk2gxOeIcUMUMYzrVAhyZNaiMh++gKGC+biGSkpDVi4GI7s2cNeIY1clerd526N1LIVfCQPBwwUPS0Ppxg3TyPfUkjSLSANu+E77MWAv0ULk9NsjVrZfiEurAKn7OQQ7yt7z63n9DI7X+pNhO9cH/9SacTbvHv+m/bCpOFOAL7Pjds2ZM6kG87z5uwF1CYbCqtM5K61TDdBoVdmgxcW1OaDU+jKUQNHedN8RlmZ978kic8P4o8kCFItRBy1nC6z25NrOOpn+GkgJKYa X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 096029FF66 X-Microsoft-Exchange-Diagnostics: 1; CY1PR10MB0572; 23:uJSEdkw5fX4KLx2gwcCrPe/JuACWLIvylvjneOR4UM1tiMZc0MM0UYZAeK6lIHyxm3nB2RjkV1hpi0c+a5LPtEEm8Ji7HHyvQdJyxgoEajDo7mrYCNKTCdf9+C/XaW8tT1VdoKIgsngJfHD5JCiZPte5ia2CWJT4Ai4rtk+GLcZkz+Z2WMHkWHGB5tjQroD4qhLDZ5zewoZS7MivhZAircKn7slnYCxFPmRjznRGH+xM8efJjUe7lDRw4LoMSU8Nfg8SdYeOK5qoP8OqI63YkT9UYDw08d09DnnWH0fM8j/9PAiWsVke/JC2h2icY4Ea79jjZ1Dq3runB80zXnmG3QO4gjLh65cHsG4fKghJPzKwFe7tAFXnJ08n3Y7hUX4DMcLleryk40xhYHPysYu56xlgFZQGrmIUSKnrOfnBWQ+6tUgjlw2JO28nubM27LjLHkDt3VevUtcdPlXn2GJEJLJwNre0qZJUEb7JDSXG6Kvguh5vUJwNEGGgwnKgljhxmu9qe1qZVDuha/sa/bm0rsz5yzPUxeaKK0g1SgUe5yfokGFvRP3ujes8bAvrTHCCn3OPvs5M7tmv6y3rVh+6XazlRBVYiCH/1UKzsCooGy+x+Hy6lAYMuLWF2JItANMIlF0B7yDQBW3L/nr2w+sC6zlKltDkz3aCwIluUOYydqlA1ln/RE2QAnKSuQ3B5L0DpIH3AkJWKLMEh2odh+XMOJ1IHE2J+njILc9hQpXYqFZBiXWlwUnRAF9/DwtbFa5+U9uboVyHRmoNvkXsg62RsqfHn4SuVBTdDuNilMNPmtSnILpV0HRryFQtTgSg01Ouv3UEeSTvbGX7CBqQHmxeo5hARi5RJYIy9WiRJf4lSZf/3f0MlHJ/6xxVCcJ755tixDkuc67lQEa6uSBG79FrIrT1nEE2NCDoU0pqN+AmPUvlbQceOn+bsVdttmmEi0Rkenoq+dQ07Niab0ViQZJ3/NmOq52wwZFT52qZdrYo+idTsHmLqoyx+PctVLe4uAXJEkjD/SnaLaAGxWwlO6DPtOx1BUwVGQ0xNiwvCy6OjRs= X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: 8SgHKM8UAOcg4eyZ0qw10r1zuUdtGjVTAw5t8V4qWWTKo8mCjF4Ny7HzJa0To1PuBccG8sbi7hiiKaTP5mEVcncu/blh6Eny04xQ6FK3Ag280KDKI+DX7x9mQEeHsJYC00WPNTcUo4YOch2CcfFpX9erTQnDF5jNwHdBha+WdiwNMowPkH/LXddqVOwie7lCB/6UxS4a6d5s9uxemnt7+Q/V8TBtoVsxY/GhQTPUQi0oeHPG6sOWf/k6m9dWVnSlxHuUCkVA7HvhroW1q7lZBhViVEeaDJmgcZaU3AiKhXDMqCuaLoX13+Qq9WxWc5gEDNY9/H5gS8ICO3gIDYN+6tEPgGcJZuyD+0fDT93kZKQon3sNh+yIRKQsQMIhl9Xh90Iz+AAv9dWrf/AOHuesixIJNZ5l5betBPcj2IiUvsw= X-OriginatorOrg: assaabloy.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2019 10:14:43.6437 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 44503ea1-b815-485c-a80c-08d69bd33a60 X-MS-Exchange-CrossTenant-Id: f0bdc1c9-5148-4f86-ac40-edd976e1814c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f0bdc1c9-5148-4f86-ac40-edd976e1814c; Ip=[141.81.165.41]; Helo=[assaabloy.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR10MB0572 X-Original-Sender: wojciech.michna@assaabloy.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@Assaabloy.onmicrosoft.com header.s=selector1-assaabloy-com header.b=Sn+ODuEd; spf=pass (google.com: domain of wojciech.michna@assaabloy.com designates 40.107.73.40 as permitted sender) smtp.mailfrom=Wojciech.Michna@assaabloy.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=assaabloy.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , This allows the user to set LOW_SPEED_LIMIT and LOW_SPEED_TIME for cURL Connection in Suricatta requests. This allows the user to define when Suricatta should drop connection when it's to slow. Signed-off-by: Szczypta Marek --- corelib/channel_curl.c | 13 ++++++++++++- include/channel_curl.h | 1 + suricatta/common.c | 6 ++++++ suricatta/server_hawkbit.c | 36 ++++++++++++++++++++++++++++++++---- 4 files changed, 51 insertions(+), 5 deletions(-) diff --git a/corelib/channel_curl.c b/corelib/channel_curl.c index fea6c05..8374430 100644 --- a/corelib/channel_curl.c +++ b/corelib/channel_curl.c @@ -480,6 +480,17 @@ channel_op_res_t channel_set_options(channel_t *this, "this is most probably not what you want. " "Adapted it to %us instead.\n", SPEED_LOW_TIME_SEC); } + + if (channel_data->low_speed_limit == 0) { + channel_data->low_speed_limit = SPEED_LOW_BYTES_SEC; + DEBUG("cURL's low download speed limit is disabled, " + "this is most probably not what you want. " + "Adapted it to %uB per second instead.\n", SPEED_LOW_BYTES_SEC); + } + + DEBUG("cURL's timeout is %us .\n", channel_data->low_speed_timeout); + DEBUG("cURL's limit is %uB .\n", channel_data->low_speed_limit); + channel_curl_t *channel_curl = this->priv; channel_op_res_t result = CHANNEL_OK; if ((curl_easy_setopt(channel_curl->handle, CURLOPT_URL, @@ -487,7 +498,7 @@ channel_op_res_t channel_set_options(channel_t *this, (curl_easy_setopt(channel_curl->handle, CURLOPT_USERAGENT, "libcurl-agent/1.0") != CURLE_OK) || (curl_easy_setopt(channel_curl->handle, CURLOPT_LOW_SPEED_LIMIT, - SPEED_LOW_BYTES_SEC) != CURLE_OK) || + channel_data->low_speed_limit) != CURLE_OK) || (curl_easy_setopt(channel_curl->handle, CURLOPT_LOW_SPEED_TIME, channel_data->low_speed_timeout) != CURLE_OK) || (curl_easy_setopt(channel_curl->handle, CURLOPT_HTTPHEADER, diff --git a/include/channel_curl.h b/include/channel_curl.h index 0e499c6..0e13111 100644 --- a/include/channel_curl.h +++ b/include/channel_curl.h @@ -53,6 +53,7 @@ typedef struct { unsigned int method; unsigned int retries; unsigned int low_speed_timeout; + unsigned int low_speed_limit; channel_body_t format; bool debug; bool usessl; diff --git a/suricatta/common.c b/suricatta/common.c index 7e59885..23d922b 100644 --- a/suricatta/common.c +++ b/suricatta/common.c @@ -21,6 +21,12 @@ void suricatta_channel_settings(void *elem, channel_data_t *chan) get_field(LIBCFG_PARSER, elem, "retry", &chan->retries); + get_field(LIBCFG_PARSER, elem, "lstimeout", + &chan->low_speed_timeout); + + get_field(LIBCFG_PARSER, elem, "lslimit", + &chan->low_speed_limit); + GET_FIELD_STRING_RESET(LIBCFG_PARSER, elem, "retrywait", tmp); if (strlen(tmp)) chan->retry_sleep = diff --git a/suricatta/server_hawkbit.c b/suricatta/server_hawkbit.c index 53801e1..9dfca16 100644 --- a/suricatta/server_hawkbit.c +++ b/suricatta/server_hawkbit.c @@ -34,6 +34,20 @@ #define JSON_OBJECT_FREED 1 +/* + * Number of seconds while below low speed + * limit before aborting. It can be overwritten + * by -s command line flag. + */ +#define CHANNEL_DEFAULT_LOWSPEED_TIME 300 + +/* + * Number of bytes per seconds that + * the transfer should be before aborting. It can be overwritten + * by -l command line flag. + */ +#define CHANNEL_DEFAULT_LOWSPEED_LIMIT 8 + static struct option long_options[] = { {"tenant", required_argument, NULL, 't'}, {"id", required_argument, NULL, 'i'}, @@ -46,6 +60,8 @@ static struct option long_options[] = { {"proxy", optional_argument, NULL, 'y'}, {"targettoken", required_argument, NULL, 'k'}, {"gatewaytoken", required_argument, NULL, 'g'}, + {"lstimeout", required_argument, NULL, 's'}, + {"lslimit", required_argument, NULL, 'l'}, {NULL, 0, NULL, 0}}; static unsigned short mandatory_argument_count = 0; @@ -121,7 +137,9 @@ static channel_data_t channel_data_defaults = {.debug = false, .format = CHANNEL_PARSE_JSON, .nocheckanswer = false, .nofollow = false, - .strictssl = true}; + .strictssl = true, + .low_speed_timeout = CHANNEL_DEFAULT_LOWSPEED_TIME, + .low_speed_limit = CHANNEL_DEFAULT_LOWSPEED_LIMIT}; static struct timeval server_time; @@ -1444,9 +1462,11 @@ void server_print_help(void) "\t -y, --proxy Use proxy. Either give proxy URL, else " "{http,all}_proxy env is tried.\n" "\t -k, --targettoken Set target token.\n" - "\t -g, --gatewaytoken Set gateway token.\n", + "\t -g, --gatewaytoken Set gateway token.\n" + "\t -s, --lstimeout timeout to check if a connection is lost (default: %d)\n" + "\t -l, --lslimit average transfer speed Bytes per seconds (default: %d)\n", CHANNEL_DEFAULT_POLLING_INTERVAL, CHANNEL_DEFAULT_RESUME_TRIES, - CHANNEL_DEFAULT_RESUME_DELAY); + CHANNEL_DEFAULT_RESUME_DELAY,CHANNEL_DEFAULT_LOWSPEED_TIME,CHANNEL_DEFAULT_LOWSPEED_LIMIT); } static int server_hawkbit_settings(void *elem, void __attribute__ ((__unused__)) *data) @@ -1519,7 +1539,7 @@ server_op_res_t server_start(char *fname, int argc, char *argv[]) /* reset to optind=1 to parse suricatta's argument vector */ optind = 1; - while ((choice = getopt_long(argc, argv, "t:i:c:u:p:xr:y::w:k:g:", + while ((choice = getopt_long(argc, argv, "t:i:c:u:p:xr:y::w:k:g:l:s:", long_options, NULL)) != -1) { switch (choice) { case 't': @@ -1595,6 +1615,14 @@ server_op_res_t server_start(char *fname, int argc, char *argv[]) channel_data_defaults.retry_sleep = (unsigned int)strtoul(optarg, NULL, 10); break; + case 's': + channel_data_defaults.low_speed_timeout = + (unsigned int)strtoul(optarg, NULL, 10); + break; + case 'l': + channel_data_defaults.low_speed_limit = + (unsigned int)strtoul(optarg, NULL, 10); + break; case '?': default: return SERVER_EINIT;