Skip to content
Snippets Groups Projects
Commit 09fc258b authored by Daniel Golle's avatar Daniel Golle
Browse files

auc: fix several issues


 * don't segfault if server reply is incomplete
 * always request 'generic' image on x86/generic and x86/64
 * make SNAPSHOT branches sticky, eg. stay on 21.02-SNAPSHOT and do
   not 'upgrade' to 21.02.0-rc2.
 * output requested server URL when debugging

Signed-off-by: default avatarDaniel Golle <daniel@makrotopia.org>
(cherry picked from commit 02bc1fc9)
parent 13045806
No related branches found
No related tags found
No related merge requests found
...@@ -479,12 +479,6 @@ static void board_cb(struct ubus_request *req, int type, struct blob_attr *msg) ...@@ -479,12 +479,6 @@ static void board_cb(struct ubus_request *req, int type, struct blob_attr *msg)
blobmsg_parse(board_policy, __BOARD_MAX, tb, blob_data(msg), blob_len(msg)); blobmsg_parse(board_policy, __BOARD_MAX, tb, blob_data(msg), blob_len(msg));
if (!tb[BOARD_BOARD_NAME]) {
fprintf(stderr, "No board name received\n");
rc=-ENODATA;
return;
}
board_name = strdup(blobmsg_get_string(tb[BOARD_BOARD_NAME]));
if (!tb[BOARD_RELEASE]) { if (!tb[BOARD_RELEASE]) {
fprintf(stderr, "No release received\n"); fprintf(stderr, "No release received\n");
...@@ -509,6 +503,21 @@ static void board_cb(struct ubus_request *req, int type, struct blob_attr *msg) ...@@ -509,6 +503,21 @@ static void board_cb(struct ubus_request *req, int type, struct blob_attr *msg)
version = strdup(blobmsg_get_string(rel[RELEASE_VERSION])); version = strdup(blobmsg_get_string(rel[RELEASE_VERSION]));
revision = strdup(blobmsg_get_string(rel[RELEASE_REVISION])); revision = strdup(blobmsg_get_string(rel[RELEASE_REVISION]));
if (!strcmp(target, "x86/64") || !strcmp(target, "x86/generic")) {
/*
* ugly work-around ahead:
* ignore board name on generic x86 targets, as image name is always 'generic'
*/
board_name = strdup("generic");
} else {
if (!tb[BOARD_BOARD_NAME]) {
fprintf(stderr, "No board name received\n");
rc=-ENODATA;
return;
}
board_name = strdup(blobmsg_get_string(tb[BOARD_BOARD_NAME]));
}
blobmsg_add_string(buf, "distro", distribution); blobmsg_add_string(buf, "distro", distribution);
blobmsg_add_string(buf, "target", target); blobmsg_add_string(buf, "target", target);
blobmsg_add_string(buf, "version", version); blobmsg_add_string(buf, "version", version);
...@@ -803,6 +812,11 @@ static int server_request(const char *url, struct blob_buf *inbuf, struct blob_b ...@@ -803,6 +812,11 @@ static int server_request(const char *url, struct blob_buf *inbuf, struct blob_b
out_bytes = 0; out_bytes = 0;
out_len = 0; out_len = 0;
#ifdef AUC_DEBUG
if (debug)
fprintf(stderr, "Requesting URL: %s\n", url);
#endif
if (outbuf) { if (outbuf) {
jsb = malloc(sizeof(struct jsonblobber)); jsb = malloc(sizeof(struct jsonblobber));
jsb->outbuf = outbuf; jsb->outbuf = outbuf;
...@@ -1138,8 +1152,16 @@ static struct branch *select_branch(char *name, char *select_version) ...@@ -1138,8 +1152,16 @@ static struct branch *select_branch(char *name, char *select_version)
break; break;
} }
} else { } else {
if (!abr || (strcmp(br->version, abr->version) > 0)) /* if we are on a snapshot branch, stay there */
abr = br; if (strcasestr(version, "snapshot")) {
if (strcasestr(br->version, "snapshot")) {
abr = br;
break;
}
} else {
if (!abr || (verrevcmp(br->version, abr->version) > 0))
abr = br;
}
} }
} }
...@@ -1340,7 +1362,7 @@ int main(int args, char *argv[]) { ...@@ -1340,7 +1362,7 @@ int main(int args, char *argv[]) {
char url[256]; char url[256];
char *sanetized_board_name, *image_name, *image_sha256, *tmp; char *sanetized_board_name, *image_name, *image_sha256, *tmp;
struct blob_attr *tbr[__REPLY_MAX]; struct blob_attr *tbr[__REPLY_MAX];
struct blob_attr *tb[__TARGET_MAX]; struct blob_attr *tb[__TARGET_MAX] = {}; /* make sure tb is NULL initialized even if blobmsg_parse isn't called */
struct stat imgstat; struct stat imgstat;
int check_only = 0; int check_only = 0;
int retry_delay = 0; int retry_delay = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment