diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c
index 9063bec..a136fda 100644
--- a/src/libosmo-mgcp/mgcp_conn.c
+++ b/src/libosmo-mgcp/mgcp_conn.c
@@ -249,9 +249,9 @@
 	return;
 }
 
-/*! dump basic connection information to human readble string.
+/*! dump basic connection information to human readable string.
  *  \param[in] conn to dump
- *  \returns human readble string */
+ *  \returns human readable string */
 char *mgcp_conn_dump(struct mgcp_conn *conn)
 {
 	static char str[sizeof(conn->name)+sizeof(conn->id)+256];
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index dc5628a..ac7dc67 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -372,8 +372,8 @@
 
 	/* Check we really managed to compensate the timestamp
 	 * offset. There should not be any remaining error, failing
-	 * here would point to a serous problem with the alingnment
-	 * error computation fuction */
+	 * here would point to a serous problem with the alignment
+	 * error computation function */
 	ts_check = ts_alignment_error(&state->out_stream, ptime,
 				      timestamp + state->patch.timestamp_offset);
 	OSMO_ASSERT(ts_check == 0);
@@ -387,7 +387,7 @@
  *  \param[in] destination RTP end
  *  \param[in,out] pointer to buffer with voice data
  *  \param[in] voice data length
- *  \param[in] maxmimum size of caller provided voice data buffer
+ *  \param[in] maximum size of caller provided voice data buffer
  *  \returns ignores input parameters, return always 0 */
 int mgcp_rtp_processing_default(struct mgcp_endpoint *endp,
 				struct mgcp_rtp_end *dst_end,
diff --git a/src/libosmo-mgcp/mgcp_osmux.c b/src/libosmo-mgcp/mgcp_osmux.c
index 6e19611..d0141f3 100644
--- a/src/libosmo-mgcp/mgcp_osmux.c
+++ b/src/libosmo-mgcp/mgcp_osmux.c
@@ -142,7 +142,7 @@
 }
 
 /* Lookup existing handle for a specified address, if the handle can not be
- * foud a the function will automatically allocate one */
+ * found, the function will automatically allocate one */
 static struct osmux_in_handle *
 osmux_handle_lookup(struct mgcp_config *cfg, struct in_addr *addr, int rem_port)
 {
diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c
index a1ecce2..f87f341 100644
--- a/src/libosmo-mgcp/mgcp_protocol.c
+++ b/src/libosmo-mgcp/mgcp_protocol.c
@@ -317,10 +317,10 @@
 		return create_ok_response(p->endp, 200, "AUEP", p->trans);
 }
 
-/* Try to find a free port by attemting to bind on it. Also handle the
+/* Try to find a free port by attempting to bind on it. Also handle the
  * counter that points on the next free port. Since we have a pointer
- * to the next free port, binding should work on the first attemt,
- * neverless, try at least the next 200 ports before giving up */
+ * to the next free port, binding should work on the first attempt,
+ * nevertheless, try at least the next 200 ports before giving up */
 static int allocate_port(struct mgcp_endpoint *endp, struct mgcp_conn_rtp *conn)
 {
 	int i;
@@ -356,7 +356,7 @@
 }
 
 /* Set the LCO from a string (see RFC 3435).
- * The string is stored in the 'string' field. A NULL string is handled excatlyy
+ * The string is stored in the 'string' field. A NULL string is handled exactly
  * like an empty string, the 'string' field is never NULL after this function
  * has been called. */
 static void set_local_cx_options(void *ctx, struct mgcp_lco *lco,
@@ -548,7 +548,7 @@
 	}
 
 	/* Set the callid, creation of another connection will only be possible
-	 * when the callid matches up. (Connections are distinuished by their
+	 * when the callid matches up. (Connections are distinguished by their
 	 * connection ids) */
 	endp->callid = talloc_strdup(tcfg->endpoints, callid);
 
@@ -1013,7 +1013,7 @@
 }
 
 /* Connection keepalive timer, will take care that dummy packets are send
- * regulary, so that NAT connections stay open */
+ * regularly, so that NAT connections stay open */
 static void mgcp_keepalive_timer_cb(void *_tcfg)
 {
 	struct mgcp_trunk_config *tcfg = _tcfg;
@@ -1184,14 +1184,14 @@
 	return 0;
 }
 
-/*! relase endpoint, all open connections are closed.
+/*! release endpoint, all open connections are closed.
  *  \param[in] endp endpoint to release */
 void mgcp_release_endp(struct mgcp_endpoint *endp)
 {
 	LOGP(DLMGCP, LOGL_DEBUG, "Releasing endpoint:0x%x\n",
 	     ENDPOINT_NUMBER(endp));
 
-	/* Normally this function should only be called wehen
+	/* Normally this function should only be called when
 	 * all connections have been removed already. In case
 	 * that there are still connections open (e.g. when
 	 * RSIP is executed), free them all at once. */
