diff --git a/addons/ooh323c/src/ooLogChan.c b/addons/ooh323c/src/ooLogChan.c
index bafb315e69210cee17c3591b96ea3b207af43234..004861cc92aa7c56ff9fdf402b617e6981be3fb3 100644
--- a/addons/ooh323c/src/ooLogChan.c
+++ b/addons/ooh323c/src/ooLogChan.c
@@ -290,7 +290,7 @@ int ooClearAllLogicalChannels(OOH323CallData *call)
       prev = temp;
       temp = temp->next;
       ooClearLogicalChannel(call, prev->channelNo);/* TODO: efficiency - This causes re-search 
-                                                      of of logical channel in the list. Can be
+                                                      of logical channel in the list. Can be
                                                       easily improved.*/
    }
    call->logicalChans = NULL;
diff --git a/addons/ooh323c/src/ooasn1.h b/addons/ooh323c/src/ooasn1.h
index e7b585eb1ec2329ed36ddb2d4432f4d072e1a382..e75ff6d63f1074c4a97c64c0a49915db0ed4612b 100644
--- a/addons/ooh323c/src/ooasn1.h
+++ b/addons/ooh323c/src/ooasn1.h
@@ -719,8 +719,8 @@ EXTERN int errCopyData (ASN1ErrInfo* pSrcErrInfo,
  * associated with an error message. These parameters are maintained on an
  * internal linked list maintained within the error information structure. The
  * list memory must be freed when error processing is complete. This function
- * is called from within errPrint after teh error has been printed out. It is
- * also called in teh freeContext function.
+ * is called from within errPrint after the error has been printed out. It is
+ * also called in the freeContext function.
  *
  * @param pErrInfo     A pointer to a structure containing information on the
  *                     error to be printed. Typically, the error info
@@ -1737,7 +1737,7 @@ EXTERN int encodeOpenTypeExtBits
 
 /**
  * This function will endcode a small, non-negative whole number as specified
- * in Section 10.6 of teh X.691 standard. This is a number that is expected to
+ * in Section 10.6 of the X.691 standard. This is a number that is expected to
  * be small, but whose size is potentially unlimited due to the presence of an
  * extension marker.
  *
diff --git a/addons/ooh323c/src/ooh323.h b/addons/ooh323c/src/ooh323.h
index 6b7edc21fb57c0afaaac5f25ed09058820d46ff6..96b54f5f06791816541c1ce2f7dba87ff800925a 100644
--- a/addons/ooh323c/src/ooh323.h
+++ b/addons/ooh323c/src/ooh323.h
@@ -81,7 +81,7 @@ EXTERN int ooHandleH2250Message
 /**
  * This function is used to process a received Facility message.
  * @param call       Handle to the call for which message has been received.
- * @param pQ931Msg   Pointer the the received Facility message.
+ * @param pQ931Msg   Pointer the received Facility message.
  *
  * @return           OO_OK, on success. OO_FAILED, on failure.
  */
diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c
index 640f553a4f56f0d9451b19450db34723ea41afc0..918b5ee538a77d473150df023c96de3c23ded25c 100644
--- a/apps/app_adsiprog.c
+++ b/apps/app_adsiprog.c
@@ -321,7 +321,7 @@ static int goto_line(char *buf, char *name, int id, char *args, struct adsi_scri
 	else if (!strcasecmp(page, "COMM"))
 		cmd = 0x80;
 	else {
-		ast_log(LOG_WARNING, "Expecting either 'INFO' or 'COMM' page, got got '%s' at line %d of %s\n", page, lineno, script);
+		ast_log(LOG_WARNING, "Expecting either 'INFO' or 'COMM' page, got '%s' at line %d of %s\n", page, lineno, script);
 		return 0;
 	}
 
diff --git a/apps/app_minivm.c b/apps/app_minivm.c
index dcf0ee2fa1bd79c77538c144d6e9e565bd7f6383..c863f63609cf0ab2643fec410299f6aa83f46379 100644
--- a/apps/app_minivm.c
+++ b/apps/app_minivm.c
@@ -1354,7 +1354,7 @@ static int sendmail(struct minivm_template *template, struct minivm_account *vmu
 	prep_email_sub_vars(chan, vmu, cidnum, cidname, dur, date, counter);
 
 	/* Find email address to use */
-	/* If there's a server e-mail address in the account, use that, othterwise template */
+	/* If there's a server e-mail address in the account, use that, otherwise template */
 	fromemail = ast_strlen_zero(vmu->serveremail) ?  template->serveremail : vmu->serveremail;
 
 	/* Find name to user for server e-mail */
diff --git a/apps/app_saycounted.c b/apps/app_saycounted.c
index 4eddc08e526cb94963ccbdc1d2cde3fc3a7b067f..f51fccbb5c25a3e8f71fa7710f439310af4af0d7 100644
--- a/apps/app_saycounted.c
+++ b/apps/app_saycounted.c
@@ -39,7 +39,7 @@
 				<para>The number of things</para>
 			</parameter>
 			<parameter name="filename" required="true">
-				<para>File name stem for the noun that is the the name of the things</para>
+				<para>File name stem for the noun that is the name of the things</para>
 			</parameter>
 		</syntax>
 		<description>
diff --git a/apps/app_skel.c b/apps/app_skel.c
index 20e6abfcc12c77b2ecf2477b149e8d5991f122cd..e21bcc57b27042284dfa4b380edf36250d5e1681 100644
--- a/apps/app_skel.c
+++ b/apps/app_skel.c
@@ -173,7 +173,7 @@ struct skel_level_state {
 };
 
 /*! \brief Object to hold level config information.
- * \note This object should hold a reference to an an object that holds state across reloads.
+ * \note This object should hold a reference to an object that holds state across reloads.
  * The other fields are just examples of the kind of data that might be stored in an level.
  */
 struct skel_level {
@@ -193,7 +193,7 @@ struct skel_level {
  * the running game.
  */
 struct skel_current_game {
-	uint32_t total_games;          /*! The total number of games for this call to to the app */
+	uint32_t total_games;          /*! The total number of games for this call to the app */
 	uint32_t games_left;           /*! How many games are left to play in this set */
 	uint32_t cheat;                /*! Whether or not cheating was enabled for the game */
 	struct skel_level *level_info; /*! The level information for the running game */
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 4a0dacc053492fc1ab36084d66db68e71c0237f2..229c00d9e534db86515ec5714c1b2288421e86b3 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -1298,7 +1298,7 @@ static void populate_defaults(struct ast_vm_user *vmu)
 }
 
 /*!
- * \brief Sets a a specific property value.
+ * \brief Sets a specific property value.
  * \param vmu The voicemail user object to work with.
  * \param var The name of the property to be set.
  * \param value The value to be set to the property.
@@ -4729,7 +4729,7 @@ static void copy_plain_file(char *frompath, char *topath)
 
 /*! 
  * \brief Removes the voicemail sound and information file.
- * \param file The path to the sound file. This will be the the folder and message index, without the extension.
+ * \param file The path to the sound file. This will be the folder and message index, without the extension.
  *
  * This is used by the DELETE macro when voicemails are stored on the file system.
  *
@@ -8151,7 +8151,7 @@ static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu,
  * 
  * When in the leave message mode (is_new_message == 1):
  *   - allow the leaving of a message for ourselves. (Will not allow us to forward a message to ourselves, when is_new_message == 0).
- *   - attempt to determine the context and and mailbox, and then invoke leave_message() function to record and store the message.
+ *   - attempt to determine the context and mailbox, and then invoke leave_message() function to record and store the message.
  *
  * When in the forward message mode (is_new_message == 0):
  *   - retrieves the current message to be forwarded
@@ -8252,7 +8252,7 @@ static int forward_message(struct ast_channel *chan, char *context, struct vm_st
 				old_exten = ast_strdupa(ast_channel_exten(chan));
 				old_priority = ast_channel_priority(chan);
 
-				/* call the the Directory, changes the channel */
+				/* call the Directory, changes the channel */
 				snprintf(vmcontext, sizeof(vmcontext), "%s,,v", context ? context : "default");
 				res = pbx_exec(chan, directory_app, vmcontext);
 
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index ba7072b2cf759db4fa87f0dcc1c3f02f825f6c3b..d5e79ffcfb114a5b9ceecbb13023ed6f319b32ab 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -8077,7 +8077,7 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast)
 						p->subs[otherindex].needunhold = 1;
 						p->owner = p->subs[SUB_REAL].owner;
 					} else {
-						ast_verb(3, "Dumping incomplete call on on %s\n", ast_channel_name(p->subs[SUB_THREEWAY].owner));
+						ast_verb(3, "Dumping incomplete call on %s\n", ast_channel_name(p->subs[SUB_THREEWAY].owner));
 						swap_subs(p, SUB_THREEWAY, SUB_REAL);
 						ast_channel_softhangup_internal_flag_add(p->subs[SUB_THREEWAY].owner, AST_SOFTHANGUP_DEV);
 						p->owner = p->subs[SUB_REAL].owner;
diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index f3fe538a02fafc668b1b656be58c9db800a15522..e8c2293cf5db42ec62661f232a2302f9e3d3627a 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -392,7 +392,7 @@ struct mgcp_endpoint {
 	/* struct ast_channel *owner; */
 	/* struct ast_rtp *rtp; */
 	/* struct sockaddr_in tmpdest; */
-	/* message go the the endpoint and not the channel so they stay here */
+	/* message go the endpoint and not the channel so they stay here */
 	struct ast_variable *chanvars;		/*!< Variables to set for channel created by user */
 	struct mgcp_endpoint *next;
 	struct mgcp_gateway *parent;
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e6e82db46147fbbe8015e2f97627c00a152e9021..3ff84153d8c3e71730ddfdf4a5e5c0d1b8162947 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -9239,7 +9239,7 @@ static enum match_req_res match_req_to_dialog(struct sip_pvt *sip_pvt_ptr, struc
 }
 
 /*! \brief This function creates a dialog to handle a forked request.  This dialog
- * exists only to properly terminiate the the forked request immediately.
+ * exists only to properly terminiate the forked request immediately.
  */
 static void forked_invite_init(struct sip_request *req, const char *new_theirtag, struct sip_pvt *original, struct ast_sockaddr *addr)
 {
@@ -15710,7 +15710,7 @@ static int sip_reregister(const void *data)
 	if (r->call && r->call->do_history) {
 		append_history(r->call, "RegistryRenew", "Account: %s@%s", r->username, r->hostname);
 	}
-	/* Since registry's are only added/removed by the the monitor thread, this
+	/* Since registry's are only added/removed by the monitor thread, this
 	   may be overkill to reference/dereference at all here */
 	if (sipdebug) {
 		ast_log(LOG_NOTICE, "   -- Re-registration for  %s@%s\n", r->username, r->hostname);
@@ -26098,7 +26098,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
 
 		if (p->owner) {
 			ast_debug(3, "INVITE w Replaces on existing call? Refusing action. [%s]\n", p->callid);
-			transmit_response_reliable(p, "400 Bad request", req);	/* The best way to not not accept the transfer */
+			transmit_response_reliable(p, "400 Bad request", req);	/* The best way to not accept the transfer */
 			check_via(p, req);
 			copy_request(&p->initreq, req);
 			/* Do not destroy existing call */
@@ -26186,7 +26186,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
 
 		if (replaces_pvt == p) {
 			ast_log(LOG_NOTICE, "INVITE with replaces into it's own call id (%s == %s)!\n", replace_id, p->callid);
-			transmit_response_reliable(p, "400 Bad request", req);	/* The best way to not not accept the transfer */
+			transmit_response_reliable(p, "400 Bad request", req);	/* The best way to not accept the transfer */
 			error = 1;
 		}
 
@@ -34086,7 +34086,7 @@ static int peer_cmp_cb(void *obj, void *arg, int flags)
 }
 
 /*!
- * Hash function based on the the peer's ip address.  For IPv6, we use the end
+ * Hash function based on the peer's ip address.  For IPv6, we use the end
  * of the address.
  * \todo Find a better hashing function
  */
diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index c3baa8acb2596757aaace3180d52c51376d1e984..574de9285d251455e6296b5f4cf2911b72f7eccb 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -4965,7 +4965,7 @@ static int unistim_hangup(struct ast_channel *ast)
 				continue;
 			}
 			if (d->ssub[i] != sub) {
-				if (d->ssub[i] != NULL) { /* Found other subchannel active other then hangup'ed one */
+				if (d->ssub[i] != NULL) { /* Found other subchannel active other than hangup'ed one */
 					end_call = 0;
 				}
 				continue;
diff --git a/channels/sip/include/reqresp_parser.h b/channels/sip/include/reqresp_parser.h
index 2543329dd10252556c9b6dde8456436495f3e7d4..eb2eb1eb7bb5a89c6a9d7084e05116a74bfd5e1b 100644
--- a/channels/sip/include/reqresp_parser.h
+++ b/channels/sip/include/reqresp_parser.h
@@ -59,7 +59,7 @@ AST_LIST_HEAD_NOLOCK(contactliststruct, contact);
  *   parts, user:secret.
  * - If the URI contains a port number, hostport will return with both
  *   parts, host:port.
- * - This function overwrites the the URI string.
+ * - This function overwrites the URI string.
  * 
  * \retval 0 on success
  * \retval -1 on error.
diff --git a/include/asterisk/ast_version.h b/include/asterisk/ast_version.h
index 1ceac30fe3f9b63df567bab77e32d1177caf4780..ff9c42f74c048f069374b1ff48b036f0826e9d93 100644
--- a/include/asterisk/ast_version.h
+++ b/include/asterisk/ast_version.h
@@ -41,7 +41,7 @@ const char *ast_get_version(void);
  */
 const char *ast_get_version_num(void);
 
-/*! Retreive the Asterisk build options */
+/*! Retrieve the Asterisk build options */
 const char *ast_get_build_opts(void);
 
 #endif /* __AST_VERSION_H */
diff --git a/include/asterisk/astobj2.h b/include/asterisk/astobj2.h
index 390e0ea1b64f5e5d9c4880b94e252a6e56efd759..53f10cc0f526bf167998607671764aaf0e0eba7b 100644
--- a/include/asterisk/astobj2.h
+++ b/include/asterisk/astobj2.h
@@ -164,7 +164,7 @@ each case is supposed to be a string pointer, a "tag", that should contain
 enough of an explanation, that you can pair operations that increment the
 ref count, with operations that are meant to decrement the refcount.
 
-Each of these calls will generate at least one line of output in in the refs
+Each of these calls will generate at least one line of output in the refs
 log files. These lines look like this:
 ...
 0x8756f00,+1,1234,chan_sip.c,22240,load_module,**constructor**,allocate users
@@ -977,7 +977,7 @@ enum search_flags {
 	OBJ_NODATA = (1 << 1),
 	/*!
 	 * Don't stop at the first match in ao2_callback() unless the
-	 * result of of the callback function has the CMP_STOP bit set.
+	 * result of the callback function has the CMP_STOP bit set.
 	 */
 	OBJ_MULTIPLE = (1 << 2),
 	/*!
diff --git a/include/asterisk/bridge_after.h b/include/asterisk/bridge_after.h
index 045168571e9037821e2c41c2e045e22bc5baeae1..d4fcbeaf61d95c85f5a6c6655a1d00647dd5d95f 100644
--- a/include/asterisk/bridge_after.h
+++ b/include/asterisk/bridge_after.h
@@ -33,7 +33,7 @@
 extern "C" {
 #endif
 
-/*! Reason the the after bridge callback will not be called. */
+/*! Reason the after bridge callback will not be called. */
 enum ast_bridge_after_cb_reason {
 	/*! The datastore is being destroyed.  Likely due to hangup. (Enum value must be zero.) */
 	AST_BRIDGE_AFTER_CB_REASON_DESTROY,
diff --git a/include/asterisk/bridge_features.h b/include/asterisk/bridge_features.h
index df01a0dca8c248673e9699f7317a25a62eeab668..38b478e7ad49006f5bb73572c4174135fed3fa32 100644
--- a/include/asterisk/bridge_features.h
+++ b/include/asterisk/bridge_features.h
@@ -719,7 +719,7 @@ int ast_bridge_features_limits_construct(struct ast_bridge_features_limits *limi
  * \param limits pointer to an ast_bridge_features_limits struct that needs to be destroyed
  *
  * This function does not free memory allocated to the ast_bridge_features_limits struct, it only frees elements within the struct.
- * You must still call ast_free on the the struct if you allocated it with malloc.
+ * You must still call ast_free on the struct if you allocated it with malloc.
  */
 void ast_bridge_features_limits_destroy(struct ast_bridge_features_limits *limits);
 
diff --git a/include/asterisk/callerid.h b/include/asterisk/callerid.h
index f7d7719d2d4f7fb84536d9d4cb11fc96640daceb..143ffae23d5d77f3a4a3f5cb98c9fdf0accdd044 100644
--- a/include/asterisk/callerid.h
+++ b/include/asterisk/callerid.h
@@ -240,7 +240,7 @@ void ast_shrink_phone_number(char *n);
 int ast_isphonenumber(const char *n);
 
 /*!
- * \brief Check if a string consists only of digits and and + \# ( ) - .
+ * \brief Check if a string consists only of digits and + \# ( ) - .
  * (meaning it can be cleaned with ast_shrink_phone_number)
  * \param exten The extension (or URI) to be checked.
  * \retval 1 if string is valid AST shrinkable phone number
diff --git a/include/asterisk/http.h b/include/asterisk/http.h
index d5f54cc657384348d3dbcbaad499ed37822da19b..63fb223bf9afedb51035ea620c1188c1f1f20a45 100644
--- a/include/asterisk/http.h
+++ b/include/asterisk/http.h
@@ -316,7 +316,7 @@ int ast_http_response_status_line(const char *buf, const char *version, int code
  * \param name out parameter pointing to the header name
  * \param value out parameter pointing to header value
  * \return -1 if buf is empty
- * \return 0 if buf could be separated into into name and value
+ * \return 0 if buf could be separated into name and value
  * \return 1 if name or value portion don't exist
  * \since 13
  */
diff --git a/include/asterisk/parking.h b/include/asterisk/parking.h
index 1cf750c0830629689637450d5a670caef6844981..afe12c914061952a4138ac17576ee330a490383f 100644
--- a/include/asterisk/parking.h
+++ b/include/asterisk/parking.h
@@ -164,7 +164,7 @@ struct ast_parking_bridge_feature_fn_table {
 	 * \param parker The \ref bridge_channel object that is initiating the parking
 	 * \param context The context to blind transfer to
 	 * \param exten The extension to blind transfer to
-	 * \param parked_channel_cb Execute the following function on the the channel that gets parked
+	 * \param parked_channel_cb Execute the following function on the channel that gets parked
 	 * \param parked_channel_data Data for the parked_channel_cb
 	 *
 	 * \note If the bridge \ref parker is in has more than one other occupant, the entire
@@ -236,7 +236,7 @@ int ast_parking_park_call(struct ast_bridge_channel *parker, char *exten, size_t
  * \param context The context to blind transfer to
  * \param exten The extension to blind transfer to
  * \param exten The extension to blind transfer to
- * \param parked_channel_cb Execute the following function on the the channel that gets parked
+ * \param parked_channel_cb Execute the following function on the channel that gets parked
  * \param parked_channel_data Data for the parked_channel_cb
  *
  * \note If the bridge \ref parker is in has more than one other occupant, the entire
diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h
index 770a1a9843534e4deee899ff649451a2d5abd25b..b88a3f67bc1ea1202437063c85579648478392b2 100644
--- a/include/asterisk/pbx.h
+++ b/include/asterisk/pbx.h
@@ -1094,7 +1094,7 @@ int ast_rdlock_context(struct ast_context *con);
 int ast_unlock_context(struct ast_context *con);
 
 /*!
- * \brief locks the macrolock in the given given context
+ * \brief locks the macrolock in the given context
  *
  * \param macrocontext name of the macro-context to lock
  *
diff --git a/include/asterisk/strings.h b/include/asterisk/strings.h
index 963519dc75ddfd9d946440f830ee0e31f18cbe2f..d93630af3ee4ff74a980f022f3aac1096f6b2895 100644
--- a/include/asterisk/strings.h
+++ b/include/asterisk/strings.h
@@ -256,7 +256,7 @@ enum ast_strsep_flags {
 
 /*!
   \brief Act like strsep but ignore separators inside quotes.
-  \param s Pointer to address of the the string to be processed.
+  \param s Pointer to address of the string to be processed.
   Will be modified and can't be constant.
   \param sep A single character delimiter.
   \param flags Controls post-processing of the result.
diff --git a/main/astmm.c b/main/astmm.c
index d53323abad18eac499ad0d21b717cb0ce877d579..59baa4221bb17985e48b93a31aee2463c2c7b413 100644
--- a/main/astmm.c
+++ b/main/astmm.c
@@ -1466,7 +1466,7 @@ static void mm_atexit_dump(void)
 	/*
 	 * Put the alloced list back into regions[].
 	 *
-	 * We have do do this because we can get called before all other
+	 * We have do this because we can get called before all other
 	 * threads have terminated.
 	 */
 	mm_atexit_hash_restore(&alloced_atexit);
diff --git a/main/db.c b/main/db.c
index 1edbcacbf485c00d1734c518fabf0d4494a56733..da533a4ec2b66c8c0a3ecb958ed0f13cbaf7938e 100644
--- a/main/db.c
+++ b/main/db.c
@@ -131,7 +131,7 @@ DEFINE_SQL_STATEMENT(create_astdb_stmt, "CREATE TABLE IF NOT EXISTS astdb(key VA
 
 /* This query begs an explanation:
  *
- * First, the parameter binding syntax used here is slightly different then the other
+ * First, the parameter binding syntax used here is slightly different than the other
  * queries in that we use a numbered parameter so that we can bind once and get the same
  * value substituted multiple times within the executed query.
  *
diff --git a/main/editline/map.c b/main/editline/map.c
index 4187cb59763bf6934a2d04bd0f936bc4e1ebe35f..448c3c0cab9784bd117dda5dda3b7d5649cd261c 100644
--- a/main/editline/map.c
+++ b/main/editline/map.c
@@ -369,7 +369,7 @@ private const el_action_t  el_map_vi_insert[] = {
 				 * NOTE: These mappings do NOT Correspond well
 				 * to the KSH VI editing assignments.
 				 * On the other and they are convenient and
-				 * many people have have gotten used to them.
+				 * many people have gotten used to them.
 				 */
 	/*   0 */	ED_UNASSIGNED,		/* ^@ */
 	/*   1 */	ED_MOVE_TO_BEG,		/* ^A */
diff --git a/main/editline/refresh.c b/main/editline/refresh.c
index fcebe1253d8c8d960a877f2818945931cade7725..1acc261a746c33fc0a130ce64f789e30115b98eb 100644
--- a/main/editline/refresh.c
+++ b/main/editline/refresh.c
@@ -1064,7 +1064,7 @@ re_fastaddc(EditLine *el)
 
 
 /* re_clear_display():
- *	clear the screen buffers so that new new prompt starts fresh.
+ *	clear the screen buffers so that new prompt starts fresh.
  */
 protected void
 re_clear_display(EditLine *el)
diff --git a/main/jitterbuf.c b/main/jitterbuf.c
index df3164f39315c76c1f896be2722c55f9eb8c1ff5..21c11043b4695640bb8c3636705b8f445bf7810c 100644
--- a/main/jitterbuf.c
+++ b/main/jitterbuf.c
@@ -358,7 +358,7 @@ static int queue_put(jitterbuf *jb, void *data, const enum jb_frame_type type, l
 	frame->type = type;
 
 	/*
-	 * frames are a circular list, jb-frames points to to the lowest ts,
+	 * frames are a circular list, jb-frames points to the lowest ts,
 	 * jb->frames->prev points to the highest ts
 	 */
 
diff --git a/main/named_acl.c b/main/named_acl.c
index 47787e921be12355775ba41c5e0dee1915b1f9ad..458d4d397a890b35e1c71c6c666f8de900ce5dad 100644
--- a/main/named_acl.c
+++ b/main/named_acl.c
@@ -403,7 +403,7 @@ static int publish_acl_change(const char *name)
 	return 0;
 
 publish_failure:
-	ast_log(LOG_ERROR, "Failed to to issue ACL change message for %s.\n",
+	ast_log(LOG_ERROR, "Failed to issue ACL change message for %s.\n",
 		ast_strlen_zero(name) ? "all named ACLs" : name);
 	return -1;
 }
diff --git a/main/netsock2.c b/main/netsock2.c
index 73595fe84a096c3aa1ce93ff27d318e4bf51a042..5f94a750af6fc838ac1e2d592cda59f7392c4d32 100644
--- a/main/netsock2.c
+++ b/main/netsock2.c
@@ -609,7 +609,7 @@ int ast_set_qos(int sockfd, int tos, int cos, const char *desc)
 	/* If the sock address is IPv6, the TCLASS field must be set. */
 	set_tclass = !ast_getsockname(sockfd, &addr) && ast_sockaddr_is_ipv6(&addr) ? 1 : 0;
 
-	/* If the the sock address is IPv4 or (IPv6 set to any address [::]) set TOS bits */
+	/* If the sock address is IPv4 or (IPv6 set to any address [::]) set TOS bits */
 	set_tos = (!set_tclass || (set_tclass && ast_sockaddr_is_any(&addr))) ? 1 : 0;
 
 	if (set_tos) {
diff --git a/main/security_events.c b/main/security_events.c
index d549d62014cd0f1ea8bf99168bbc7c933976288d..24b2b6a0bb48c5a561f294421ef0130c660c0424 100644
--- a/main/security_events.c
+++ b/main/security_events.c
@@ -314,7 +314,7 @@
 				<parameter name="ReceivedChallenge" required="false">
 					<para>The challenge that was received.</para>
 				</parameter>
-				<parameter name="RecievedHash" required="false">
+				<parameter name="ReceivedHash" required="false">
 					<para>The hash that was received.</para>
 				</parameter>
 			</syntax>
diff --git a/main/stdtime/localtime.c b/main/stdtime/localtime.c
index 64840e826ff666440b466a133eae5c38e3c8467c..1b9345449d3f15908634bfd6c83dbc4a4cea6974 100644
--- a/main/stdtime/localtime.c
+++ b/main/stdtime/localtime.c
@@ -1057,7 +1057,7 @@ static int tzload(const char *name, struct state * const sp, const int doextend)
 			int	result;
 
 			/* for temporary struct state --
-			 * macro flags the the struct as a stack temp.
+			 * macro flags the struct as a stack temp.
 			 * to prevent use within add_notify()
 			 */
 			SP_STACK_INIT(ts);
@@ -1777,7 +1777,7 @@ void ast_get_dst_info(const time_t * const timep, int *dst_enabled, time_t *dst_
 		return;
 
 	/* If the desired time exceeds the bounds of the defined time transitions
-	* then give give up on determining DST info and simply look for gmt offset
+	* then give up on determining DST info and simply look for gmt offset
 	* This requires that I adjust the given time using increments of Gregorian
 	* repeats to place the time within the defined time transitions in the
 	* timezone structure.
diff --git a/main/threadpool.c b/main/threadpool.c
index 6240b7329a92130e03fa39337d6ecddce704667b..874b2d812afd866d25e0d5630973c453e8fb982e 100644
--- a/main/threadpool.c
+++ b/main/threadpool.c
@@ -702,7 +702,7 @@ static int kill_threads(void *obj, void *arg, int flags)
 /*!
  * \brief ao2 callback to zombify a set number of threads.
  *
- * Threads will be zombified as long as as the counter has not reached
+ * Threads will be zombified as long as the counter has not reached
  * zero. The counter is decremented with each thread that is zombified.
  *
  * Zombifying a thread involves removing it from its current container,
diff --git a/menuselect/menuselect_gtk.c b/menuselect/menuselect_gtk.c
index 9379d7de61695698e603e1bdc9c403941130f57e..fcf755e61b59d02357d14befa301a346ba9fa47f 100644
--- a/menuselect/menuselect_gtk.c
+++ b/menuselect/menuselect_gtk.c
@@ -208,7 +208,7 @@ static GtkWidget *get_menubar_menu(GtkWidget *window)
 
 	/* This function generates the menu items. Pass the item factory,
 	   the number of items in the array, the array itself, and any
-	   callback data for the the menu items. */
+	   callback data for the menu items. */
 	gtk_item_factory_create_items(item_factory, nmenu_items, menu_items, NULL);
 
 	/* Attach the new accelerator group to the window. */
diff --git a/res/ael/pval.c b/res/ael/pval.c
index 07545f659aaf281767ef31eeb713704e0c8d26c2..7c420d1c459071719c413657b5e47c3e5edb9a53 100644
--- a/res/ael/pval.c
+++ b/res/ael/pval.c
@@ -2878,7 +2878,7 @@ void check_pval(pval *item, struct argapp *apps, int in_globals)
 	   3. Does the number of macro args match the definition?
 	   4. Is a macro call missing its & at the front?
 	   5. Application calls-- we could check syntax for existing applications,
-	      but I need some some sort of universal description bnf for a general
+	      but I need some sort of universal description bnf for a general
 		  sort of method for checking arguments, in number, maybe even type, at least. 
 		  Don't want to hand code checks for hundreds of applications.
 	*/
diff --git a/res/parking/res_parking.h b/res/parking/res_parking.h
index b8be0419b58c41f6d6df14e6e229e91892d025ef..6fbde092181f7a32419843222cb65e32ab0e40d0 100644
--- a/res/parking/res_parking.h
+++ b/res/parking/res_parking.h
@@ -135,7 +135,7 @@ struct parking_lot_cfg *parking_lot_cfg_create(const char *cat);
  * \param dynamic non-zero if creating a dynamic parking lot with this. Don't replace existing parking lots. Ever.
  *
  * \retval A reference to the new parking lot
- * \retval NULL if it was not found and could not be be allocated
+ * \retval NULL if it was not found and could not be allocated
  *
  * \note The parking lot will need to be unreffed if it ever falls out of scope
  * \note The parking lot will automatically be added to the parking lot container if needed as part of this process
diff --git a/res/res_config_sqlite3.c b/res/res_config_sqlite3.c
index 56558624fe53c885b84adc27941de2e73d045693..961d7949b279642788ee86c979068c5824e2d80b 100644
--- a/res/res_config_sqlite3.c
+++ b/res/res_config_sqlite3.c
@@ -1171,7 +1171,7 @@ static int realtime_sqlite3_require(const char *database, const char *table, va_
 	struct realtime_sqlite3_db *db;
 
 	/* SQLite3 columns are dynamically typed, with type affinity. Built-in functions will
-	 * return the results as char * anyway. The only field that that cannot contain text
+	 * return the results as char * anyway. The only field that cannot contain text
 	 * data is an INTEGER PRIMARY KEY, which must be a 64-bit signed integer. So, for
 	 * the purposes here we really only care whether the column exists and not what its
 	 * type or length is. */
diff --git a/res/res_fax.c b/res/res_fax.c
index 6e4451b6797753585459d18cbc880aec36c7cf63..823d560d9b4c4efd8bee9ef90a6945a8e908eacb 100644
--- a/res/res_fax.c
+++ b/res/res_fax.c
@@ -365,7 +365,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 					'gateway' and state is 'Uninitialized'.</para>
 				</parameter>
 				<parameter name="FileName" required="false">
-					<para>Filename of the image being sent/recieved for this FAX session. This field is not
+					<para>Filename of the image being sent/received for this FAX session. This field is not
 					included if Operation isn't 'send' or 'receive'.</para>
 				</parameter>
 				<parameter name="PagesTransmitted" required="false">
@@ -377,7 +377,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 					Operation is not 'send' or 'receive'. Will be 0 for 'send'.</para>
 				</parameter>
 				<parameter name="TotalBadLines" required="false">
-					<para>Total number of bad lines sent/recieved during this session. This field is not
+					<para>Total number of bad lines sent/received during this session. This field is not
 					included if Operation is not 'send' or 'received'.</para>
 				</parameter>
 			</syntax>
diff --git a/res/res_format_attr_opus.c b/res/res_format_attr_opus.c
index 857b9435cf079dead0e1986bc94106d5b30cd303..9e5fe6673f84b98f0fd96af7538d33745b4e8b2c 100644
--- a/res/res_format_attr_opus.c
+++ b/res/res_format_attr_opus.c
@@ -116,7 +116,7 @@ static void sdp_fmtp_get(const char *attributes, const char *name, int *attr)
 		/* Skip any preceeding blanks as some implementations separate attributes using spaces too */
 		kvp = ast_skip_blanks(kvp);
 
-		/* If we are at at the requested attribute get its value and return */
+		/* If we are at the requested attribute get its value and return */
 		if (!strncmp(kvp, name, strlen(name)) && kvp[strlen(name)] == '=') {
 			if (sscanf(kvp, "%*[^=]=%30d", &val) == 1) {
 				*attr = val;
diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c
index 54c6c49296032e73c1b4cac989ed88ac04af57e2..9aab75b838ca91d18f498c8cc068096673529a81 100644
--- a/res/res_pjsip/pjsip_configuration.c
+++ b/res/res_pjsip/pjsip_configuration.c
@@ -1565,8 +1565,8 @@ static int ami_show_endpoint(struct mansession *s, const struct message *m)
 		return 0;
 	}
 
-	astman_send_listack(s, m, "Following are Events for each object "
-			    "associated with the the Endpoint", "start");
+	astman_send_listack(s, m, "Following are Events for each object associated with the Endpoint",
+		"start");
 
 	/* the endpoint detail needs to always come first so apply as such */
 	if (format_ami_endpoint(endpoint, &ami) ||
diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c
index cb0be6127b58d8c6da09c71e0735fe99de6e78fe..e9e83245616c2c1bdbdf263509700880ff6d646b 100644
--- a/res/res_pjsip_pubsub.c
+++ b/res/res_pjsip_pubsub.c
@@ -895,7 +895,7 @@ static int have_visited(const char *resource, struct resources *visited)
  * This iterates through the items on a resource list and creates tree nodes for each one. The
  * tree nodes created are children of the supplied parent node. If an item in the resource
  * list is itself a list, then this function is called recursively to provide children for
- * the the new node.
+ * the new node.
  *
  * If an item in a resource list is not a list, then the supplied subscription handler is
  * called into as if a new SUBSCRIBE for the list item were presented. The handler's response
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index bb53dad09735f34486cd3e2970fc68112bbb447b..ae5f19a034dac89c44d89ffc441bc43760f9c13d 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -473,7 +473,7 @@ enum delayed_method {
 
 /*!
  * \internal
- * \brief Convert delayed method enum value to to a string.
+ * \brief Convert delayed method enum value to a string.
  * \since 13.3.0
  *
  * \param method Delayed method enum value to convert to a string.
@@ -1507,7 +1507,7 @@ static int sip_session_suspend_task(void *data)
 	suspender->suspended = 1;
 	ast_cond_signal(&suspender->cond_suspended);
 
-	/* Wait for the the serializer suspension to be completed. */
+	/* Wait for the serializer suspension to be completed. */
 	while (!suspender->complete) {
 		ast_cond_wait(&suspender->cond_complete, ao2_object_get_lockaddr(suspender));
 	}
diff --git a/tests/test_aoc.c b/tests/test_aoc.c
index 35387df90ead673c8790db4243aa7516896ff4e7..119706404a6feee6c5b50e61329ed1f3da7bac6c 100644
--- a/tests/test_aoc.c
+++ b/tests/test_aoc.c
@@ -359,7 +359,7 @@ AST_TEST_DEFINE(aoc_encode_decode_test)
 		goto cleanup_aoc_test;
 	}
 
-	/* Set a currency name larger than 10 characters which is the the maximum
+	/* Set a currency name larger than 10 characters which is the maximum
 	 * length allowed by the ETSI aoc standard.  The name is expected to truncate
 	 * to 10 characters. */
 	if ((ast_aoc_set_currency_info(decoded, 100, AST_AOC_MULT_ONE, "12345678901234567890")) ||
diff --git a/tests/test_taskprocessor.c b/tests/test_taskprocessor.c
index ad2074cb8d813c6d87bd71e9fc09eb881b1c2cdf..273e045d5b5c15f28dac6982ab92aa04eebbf546 100644
--- a/tests/test_taskprocessor.c
+++ b/tests/test_taskprocessor.c
@@ -652,7 +652,7 @@ AST_TEST_DEFINE(taskprocessor_shutdown)
 	/* Wait for shutdown to complete */
 	pthread_join(shutdown_thread, NULL);
 
-	/* Should have also also completed task2 */
+	/* Should have also completed task2 */
 	wait_res = shutdown_has_completed(task2);
 	if (!wait_res) {
 		ast_test_status_update(test, "Task2 didn't finish\n");