Attention is currently required from: dexter.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email )
Change subject: mgcp_client_fsm: fix inconsistent API (param_present, param).
......................................................................
Patch Set 4:
(1 comment)
File include/osmocom/mgcp_client/mgcp_client.h:
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/2f60e54a_d5e0fc59
PS2, Line 121: struct mgcp_msg {
> The reason for this is that mgcp_client_fsm.c is using it. […]
so please, let's fix this kind of issues before modyfying this struct.
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I50d737f3f3d45e4004c64101700a471fe75b3436
Gerrit-Change-Number: 34351
Gerrit-PatchSet: 4
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 13 Sep 2023 13:34:54 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: pespin.
Jenkins Builder has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email )
Change subject: mgcp_client_fsm: fix inconsistent API (param_present, param).
......................................................................
Patch Set 4:
(6 comments)
File TODO-RELEASE:
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-11001):
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/7c995e5c_06ad5a2f
PS4, Line 29: mgcp NEW API add struct struct mgcp_codec_param2, depreacte struct mgcp_codec_param
'depreacte' may be misspelled - perhaps 'deprecate'?
File include/osmocom/mgcp_client/mgcp_client.h:
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-11001):
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/d07356eb_2823a95a
PS4, Line 139: bool param_present; /* Depreacted, please use codecs_param_present */
'Depreacted' may be misspelled - perhaps 'Deprecated'?
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-11001):
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/e9436f59_8374ec8f
PS4, Line 140: struct mgcp_codec_param param; /* Depreacted, please use codecs_param */
'Depreacted' may be misspelled - perhaps 'Deprecated'?
File src/libosmo-mgcp-client/mgcp_client.c:
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-11001):
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/cd342018_c2fae758
PS4, Line 1376: LOGPMGW(mgcp, LOGL_NOTICE, "using depreacted struct member mgcp_msg->param, please use mgcp_msg->codecs_param!\n");
'depreacted' may be misspelled - perhaps 'deprecated'?
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-11001):
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/9713757f_3aa4aa31
PS4, Line 1393: if (mgcp_msg->codecs[i] != CODEC_AMR_8000_1 && mgcp_msg->codecs[i] != CODEC_AMRWB_16000_1)
suspect code indent for conditional statements (24, 35)
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-11001):
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/b1c4169a_fe4c69a5
PS4, Line 1394: continue;
Statements should start on a tabstop
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I50d737f3f3d45e4004c64101700a471fe75b3436
Gerrit-Change-Number: 34351
Gerrit-PatchSet: 4
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 13 Sep 2023 13:23:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: pespin.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email )
Change subject: mgcp_client_fsm: fix inconsistent API (param_present, param).
......................................................................
Patch Set 4:
(2 comments)
File include/osmocom/mgcp_client/mgcp_client.h:
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/cf48a865_e1b16b96
PS2, Line 121: struct mgcp_msg {
> Can you point me to the API allocating and returning a pointer to this struct? because I cannot find […]
The reason for this is that mgcp_client_fsm.c is using it. So it's in deed not so private as I thought. I also remember now we were indeed using it in osmo-bsc before we had the mgcp_client_fsm and mgcp_client_endpoint_fsm API.
I guess this also means that we might need an alloc function for it?
File src/libosmo-mgcp-client/mgcp_client.c:
https://gerrit.osmocom.org/c/osmo-mgw/+/34351/comment/4f653945_eb0f285d
PS2, Line 1376: LOGPMGW(mgcp, LOGL_DEBUG, "using depreacted struct member mgcp_msg->param, please use mgcp_msg->codecs_param!\n");
> You marked as DONE but I see no change...
That is strange. I hope you see the update now...
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I50d737f3f3d45e4004c64101700a471fe75b3436
Gerrit-Change-Number: 34351
Gerrit-PatchSet: 4
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 13 Sep 2023 13:23:20 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: pespin.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email
to look at the new patch set (#4).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: mgcp_client_fsm: fix inconsistent API (param_present, param).
......................................................................
mgcp_client_fsm: fix inconsistent API (param_present, param).
The struct struct mgcp_conn_peer in mgcp_client_fsm.h (and the struct
struct mgcp_msg in mgcp_client.h) use a problematic way to hold
information about codec parameters: Using the struct member param, the
user can set options for AMR (octet-aligned/bandwith-efficient). This is
done using the struct mgcp_codec_param, which is also not very well
thought out. Since we can only set the parameters for AMR exactly once, it
is not possible to set different parameters when AMR occurs multiple times
in codecs.
Since what we would have needed is an array of struct mgcp_codec_param,
where we can set the parameters for each codec we use indvidually. So
let's depreacate the use of param/param_present and add a new struct
member codec_params/codec_params_present, where codec_params is an
array. Let's also re-define mgcp_codec_params as mgcp_codec_params2, and
use a union so that we can add params for other codecs than AMR in the
future.
Unfortunately mgcp_codec_params is also used in osmo-mgw, we should
migrate each occurrence of mgcp_codec_param to mgcp_codec_param2 there
too, but this should be done in a follow up patch.
Related: OS#6171
Change-Id: I50d737f3f3d45e4004c64101700a471fe75b3436
---
M TODO-RELEASE
M include/osmocom/mgcp/mgcp_common.h
M include/osmocom/mgcp_client/mgcp_client.h
M include/osmocom/mgcp_client/mgcp_client_fsm.h
M src/libosmo-mgcp-client/mgcp_client.c
M src/libosmo-mgcp-client/mgcp_client_fsm.c
6 files changed, 84 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/51/34351/4
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/34351?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I50d737f3f3d45e4004c64101700a471fe75b3436
Gerrit-Change-Number: 34351
Gerrit-PatchSet: 4
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-mgw/+/34404?usp=email )
Change subject: mgcp_client_fsm: allocate struct mgcp_conn_peer dynamically
......................................................................
mgcp_client_fsm: allocate struct mgcp_conn_peer dynamically
The struct mgcp_conn_peer is allocated statically at the moment. This is
a problem because in case new struct members are added, all those
statocally allocated locations in the programs using the mgcp_client_fsm
API may cause memory corruptions. So let's add an alloc function for this
struct that API users can use.
Let's also use that alloc function in mgcp_client_endpoint_fsm.c for
good measure.
Related: OS#6171
Change-Id: I523d0fcb020f7d46323c497a4be9ee00d5f242ba
---
M include/osmocom/mgcp_client/mgcp_client_fsm.h
M src/libosmo-mgcp-client/mgcp_client_endpoint_fsm.c
M src/libosmo-mgcp-client/mgcp_client_fsm.c
3 files changed, 57 insertions(+), 16 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/04/34404/1
diff --git a/include/osmocom/mgcp_client/mgcp_client_fsm.h b/include/osmocom/mgcp_client/mgcp_client_fsm.h
index 658d5ea..6127286 100644
--- a/include/osmocom/mgcp_client/mgcp_client_fsm.h
+++ b/include/osmocom/mgcp_client/mgcp_client_fsm.h
@@ -12,7 +12,11 @@
* When modifiying a connection, the endpoint and call_id members may be left
* unpopulated. The call_id field is ignored in this case. If an endpoint
* identifier is supplied it is checked against the internal state to make
- * sure it is correct. */
+ * sure it is correct.
+ *
+ * CAUTION: This struct may be subject to changes and new struct members may
+ * be added in the future. To prevent memory conflicts it is strongly advised
+ * to allocate this struct dynamically using mgcp_conn_peer_alloc() */
struct mgcp_conn_peer {
/*! RTP connection IP-Address (optional, string e.g. "127.0.0.1") */
char addr[INET6_ADDRSTRLEN];
@@ -70,6 +74,7 @@
struct mgcp_codec_param2 codecs_param[MGCP_MAX_CODECS];
};
+struct mgcp_conn_peer *mgcp_conn_peer_alloc(void *ctx);
struct osmo_fsm_inst *mgcp_conn_create(struct mgcp_client *mgcp, struct osmo_fsm_inst *parent_fi, uint32_t parent_term_evt,
uint32_t parent_evt, struct mgcp_conn_peer *conn_peer);
int mgcp_conn_modify(struct osmo_fsm_inst *fi, uint32_t parent_evt, struct mgcp_conn_peer *conn_peer);
diff --git a/src/libosmo-mgcp-client/mgcp_client_endpoint_fsm.c b/src/libosmo-mgcp-client/mgcp_client_endpoint_fsm.c
index a01bbdc..769bf37 100644
--- a/src/libosmo-mgcp-client/mgcp_client_endpoint_fsm.c
+++ b/src/libosmo-mgcp-client/mgcp_client_endpoint_fsm.c
@@ -44,9 +44,9 @@
} while(0)
#define LOG_CI_VERB(ci, level, fmt, args...) do { \
- if (ci->verb_info.addr[0]) \
+ if (ci->verb_info->addr[0]) \
LOG_CI(ci, level, "%s %s:%u: " fmt, \
- osmo_mgcp_verb_name(ci->verb), ci->verb_info.addr, ci->verb_info.port, \
+ osmo_mgcp_verb_name(ci->verb), ci->verb_info->addr, ci->verb_info->port, \
## args); \
else \
LOG_CI(ci, level, "%s: " fmt, \
@@ -95,11 +95,11 @@
bool pending;
bool sent;
enum mgcp_verb verb;
- struct mgcp_conn_peer verb_info;
+ struct mgcp_conn_peer *verb_info;
struct fsm_notify notify;
bool got_port_info;
- struct mgcp_conn_peer rtp_info;
+ struct mgcp_conn_peer *rtp_info;
char mgcp_ci_str[MGCP_CONN_ID_LENGTH];
};
@@ -297,6 +297,7 @@
struct osmo_fsm_inst *fi;
struct osmo_mgcpc_ep *ep;
int rc;
+ size_t i;
if (!mgcp_client)
return NULL;
@@ -309,6 +310,11 @@
ep = talloc_zero(fi, struct osmo_mgcpc_ep);
OSMO_ASSERT(ep);
+ for (i = 0; i < ARRAY_SIZE(ep->ci); i++) {
+ ep->ci[i].verb_info = mgcp_conn_peer_alloc(ep);
+ ep->ci[i].rtp_info = mgcp_conn_peer_alloc(ep);
+ }
+
*ep = (struct osmo_mgcpc_ep){
.mgcp_client = mgcp_client,
.fi = fi,
@@ -460,7 +466,7 @@
continue;
if (other_ci->sent)
continue;
- OSMO_STRLCPY_ARRAY(other_ci->verb_info.endpoint, ep->endpoint);
+ OSMO_STRLCPY_ARRAY(other_ci->verb_info->endpoint, ep->endpoint);
}
return 0;
}
@@ -496,7 +502,7 @@
* may provide new one after remote end params changed */
if (rtp_info) {
ci->got_port_info = true;
- ci->rtp_info = *rtp_info;
+ *ci->rtp_info = *rtp_info;
}
break;
@@ -506,7 +512,7 @@
LOG_CI(ci, LOGL_DEBUG, "received successful response to %s: RTP=%s%s\n",
osmo_mgcp_verb_name(ci->verb),
- mgcp_conn_peer_name(ci->got_port_info? &ci->rtp_info : NULL),
+ mgcp_conn_peer_name(ci->got_port_info? ci->rtp_info : NULL),
ci->notify.fi ? "" : " (not sending a notification)");
if (ci->notify.fi)
@@ -524,7 +530,7 @@
return NULL;
if (!ci->got_port_info)
return NULL;
- return &ci->rtp_info;
+ return ci->rtp_info;
}
/*! Return the MGW's remote RTP port information for this connection, i.e. the remote RTP port that the MGW is sending
@@ -534,7 +540,7 @@
ci = osmo_mgcpc_ep_check_ci((struct osmo_mgcpc_ep_ci*)ci);
if (!ci)
return NULL;
- return &ci->verb_info;
+ return ci->verb_info;
}
/*! Return the MGW's RTP port information for this connection, as returned by the last CRCX/MDCX OK message. */
@@ -665,15 +671,15 @@
LOG_CI_VERB(ci, LOGL_DEBUG, "notify=%s\n", osmo_fsm_inst_name(ci->notify.fi));
if (verb_info)
- ci->verb_info = *verb_info;
+ *ci->verb_info = *verb_info;
if (ep->endpoint[0]) {
- if (ci->verb_info.endpoint[0] && strcmp(ci->verb_info.endpoint, ep->endpoint))
+ if (ci->verb_info->endpoint[0] && strcmp(ci->verb_info->endpoint, ep->endpoint))
LOG_CI(ci, LOGL_ERROR,
"Warning: Requested %s on endpoint %s, but this CI is on endpoint %s."
" Using the proper endpoint instead.\n",
- osmo_mgcp_verb_name(verb), ci->verb_info.endpoint, ep->endpoint);
- osmo_strlcpy(ci->verb_info.endpoint, ep->endpoint, sizeof(ci->verb_info.endpoint));
+ osmo_mgcp_verb_name(verb), ci->verb_info->endpoint, ep->endpoint);
+ osmo_strlcpy(ci->verb_info->endpoint, ep->endpoint, sizeof(ci->verb_info->endpoint));
}
switch (ci->verb) {
@@ -764,7 +770,7 @@
LOG_CI_VERB(ci, LOGL_DEBUG, "Sending\n");
ci->mgcp_client_fi = mgcp_conn_create(ep->mgcp_client, ep->fi,
CI_EV_FAILURE(ci), CI_EV_SUCCESS(ci),
- &ci->verb_info);
+ ci->verb_info);
ci->sent = true;
if (!ci->mgcp_client_fi){
LOG_CI_VERB(ci, LOGL_ERROR, "Cannot send\n");
@@ -777,7 +783,7 @@
case MGCP_VERB_MDCX:
OSMO_ASSERT(ci->mgcp_client_fi);
LOG_CI_VERB(ci, LOGL_DEBUG, "Sending\n");
- rc = mgcp_conn_modify(ci->mgcp_client_fi, CI_EV_SUCCESS(ci), &ci->verb_info);
+ rc = mgcp_conn_modify(ci->mgcp_client_fi, CI_EV_SUCCESS(ci), ci->verb_info);
ci->sent = true;
if (rc) {
LOG_CI_VERB(ci, LOGL_ERROR, "Cannot send (rc=%d %s)\n", rc, strerror(-rc));
diff --git a/src/libosmo-mgcp-client/mgcp_client_fsm.c b/src/libosmo-mgcp-client/mgcp_client_fsm.c
index 1d50b3f..01a18cc 100644
--- a/src/libosmo-mgcp-client/mgcp_client_fsm.c
+++ b/src/libosmo-mgcp-client/mgcp_client_fsm.c
@@ -621,6 +621,17 @@
.log_subsys = DLMGCP,
};
+/*! allocate struct to hold the description of an MGCP connection peer.
+ * \param[in] ctx talloc context.
+ * \returns newly-allocated and initialized struct mgcp_conn_peer. */
+struct mgcp_conn_peer *mgcp_conn_peer_alloc(void *ctx)
+{
+ struct mgcp_conn_peer *peer;
+ peer = talloc_zero(ctx, struct mgcp_conn_peer);
+ OSMO_ASSERT(peer);
+ return peer;
+}
+
/*! allocate FSM, and create a new connection on the MGW.
* \param[in] mgcp MGCP client descriptor.
* \param[in] parent_fi Parent FSM instance.
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/34404?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I523d0fcb020f7d46323c497a4be9ee00d5f242ba
Gerrit-Change-Number: 34404
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newchange
osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ci/+/34403?usp=email )
Change subject: OBS: keep going if version can't be parsed
......................................................................
OBS: keep going if version can't be parsed
Don't crash in Osmocom_OBS_wireshark because the version can't be
parsed.
Fix for:
packaging.version.InvalidVersion: Invalid version: '4.1.1rc0.238'
Change-Id: I0cf6c7c2d5939dccc14107f0a8c15593ea8bc4c2
---
M scripts/obs/lib/debian.py
1 file changed, 28 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/03/34403/1
diff --git a/scripts/obs/lib/debian.py b/scripts/obs/lib/debian.py
index 2995185..6703f8b 100644
--- a/scripts/obs/lib/debian.py
+++ b/scripts/obs/lib/debian.py
@@ -98,13 +98,19 @@
version_changelog = get_last_version_from_changelog(project)
# Don't use a lower number (OS#6173)
- if packaging.version.parse(version_changelog.split("-")[0]) > \
- packaging.version.parse(version.split("-")[0]):
- print(f"{project}: WARNING: version from changelog"
- f" ({version_changelog}) is higher than version based on git tag"
- f" ({version}), using version from changelog (git tag not pushed"
- " yet?)")
- return
+ try:
+ if packaging.version.parse(version_changelog.split("-")[0]) > \
+ packaging.version.parse(version.split("-")[0]):
+ print(f"{project}: WARNING: version from changelog"
+ f" ({version_changelog}) is higher than version based on git tag"
+ f" ({version}), using version from changelog (git tag not pushed"
+ " yet?)")
+ return
+ except packaging.version.InvalidVersion:
+ # packaging.version.parse can parse the version numbers used in Osmocom
+ # projects (where we need the above check), but not e.g. some versions
+ # from wireshark. Don't abort here if that is the case.
+ pass
if version_changelog == version:
return
--
To view, visit https://gerrit.osmocom.org/c/osmo-ci/+/34403?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Change-Id: I0cf6c7c2d5939dccc14107f0a8c15593ea8bc4c2
Gerrit-Change-Number: 34403
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: newchange
osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ci/+/34402?usp=email )
Change subject: scripts: wireshark: remove laforge/doc-fixes
......................................................................
scripts: wireshark: remove laforge/doc-fixes
The two patches from this branch have been upstreamed:
https://gitlab.com/wireshark/wireshark/-/commit/15ed53005b7b924303514e2d361…
And with recent changes to docs/README.dissector, git fails to detect
that these are already applied.
Fix for:
CONFLICT (content): Merge conflict in doc/README.dissector
Change-Id: I17017ba396996e781250d30406193c4f5ec44f82
---
M scripts/obs/update_obs_wireshark.sh
1 file changed, 18 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/02/34402/1
diff --git a/scripts/obs/update_obs_wireshark.sh b/scripts/obs/update_obs_wireshark.sh
index ae66aaa..e422292 100755
--- a/scripts/obs/update_obs_wireshark.sh
+++ b/scripts/obs/update_obs_wireshark.sh
@@ -4,7 +4,6 @@
BRANCHES="
osmith/deb-packaging
- laforge/doc-fixes
osmocom/qcdiag
laforge/rspro
"
--
To view, visit https://gerrit.osmocom.org/c/osmo-ci/+/34402?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Change-Id: I17017ba396996e781250d30406193c4f5ec44f82
Gerrit-Change-Number: 34402
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: newchange