diff --git a/src/arg.c b/src/arg.c
index 2676ce8..ec7626d 100644
--- a/src/arg.c
+++ b/src/arg.c
@@ -362,7 +362,7 @@
 		memprintf(err_msg, "expected ')' before '%s'", word);
 		if (len > 0)
 			free(word);
-		/* when we're missing a right paren, the empty part preceeding
+		/* when we're missing a right paren, the empty part preceding
 		 * already created an empty arg, adding one to the position, so
 		 * let's fix the reporting to avoid being confusing.
 		 */
diff --git a/src/dns.c b/src/dns.c
index 49b1c49..740e066 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -1273,7 +1273,7 @@
 		/* Check for preferred network. */
 		for (j = 0; j < dns_opts->pref_net_nb; j++) {
 
-			/* Compare only the same adresses class. */
+			/* Compare only the same addresses class. */
 			if (dns_opts->pref_net[j].family != ip_type)
 				continue;
 
@@ -1698,7 +1698,7 @@
 	return -1;
 }
 
-/* Removes a requester from a DNS resoltion. It takes takes care of all the
+/* Removes a requester from a DNS resolution. It takes takes care of all the
  * consequences. It also cleans up some parameters from the requester.
  */
 void dns_unlink_resolution(struct dns_requester *requester)
diff --git a/src/fcgi-app.c b/src/fcgi-app.c
index 212ea23..d7285bf 100644
--- a/src/fcgi-app.c
+++ b/src/fcgi-app.c
@@ -702,7 +702,7 @@
 				struct sink *sink = sink_find(logsrv->ring_name);
 
 				if (!sink || sink->type != SINK_TYPE_BUFFER) {
-					ha_alert("config : fcgi-app '%s' : log server uses unkown ring named '%s'.\n",
+					ha_alert("config : fcgi-app '%s' : log server uses unknown ring named '%s'.\n",
 						 curapp->name, logsrv->ring_name);
 					err_code |= ERR_ALERT | ERR_FATAL;
 				}
diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c
index 6641249..87f359d 100644
--- a/src/flt_http_comp.c
+++ b/src/flt_http_comp.c
@@ -458,7 +458,7 @@
 }
 
 /*
- * Selects a comression algorithm depending of the server response.
+ * Selects a compression algorithm depending of the server response.
  */
 static int
 select_compression_response_header(struct comp_state *st, struct stream *s, struct http_msg *msg)
diff --git a/src/haproxy.c b/src/haproxy.c
index 7537d93..786dd16 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -7,8 +7,8 @@
  * as published by the Free Software Foundation; either version
  * 2 of the License, or (at your option) any later version.
  *
- * Please refer to RFC7230 - RFC7235 informations about HTTP protocol, and
- * RFC6265 for informations about cookies usage. More generally, the IETF HTTP
+ * Please refer to RFC7230 - RFC7235 information about HTTP protocol, and
+ * RFC6265 for information about cookies usage. More generally, the IETF HTTP
  * Working Group's web site should be consulted for protocol related changes :
  *
  *     http://ftp.ics.uci.edu/pub/ietf/http/
@@ -194,7 +194,7 @@
 int active_peers = 0; /* number of active peers (connection attempts and connected) */
 int connected_peers = 0; /* number of connected peers (verified ones) */
 
-/* Here we store informations about the pids of the processes we may pause
+/* Here we store information about the pids of the processes we may pause
  * or kill. We will send them a signal every 10 ms until we can bind to all
  * our ports. With 200 retries, that's about 2 seconds.
  */
@@ -1215,7 +1215,7 @@
 				}
 				/*
 				 * Be paranoid and use memcpy() to avoid any
-				 * potential alignement issue.
+				 * potential alignment issue.
 				 */
 				memcpy(&tmpfd[got_fd], CMSG_DATA(cmsg), totlen);
 				got_fd += totlen / sizeof(int);
diff --git a/src/hlua.c b/src/hlua.c
index 18c8307..6ff0a66 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -94,7 +94,7 @@
  *  - The converters wrapper function
  *  - The sample-fetch wrapper functions
  *
- * It is tolerated that the initilisation function returns an abort.
+ * It is tolerated that the initialisation function returns an abort.
  * Before each Lua abort, an error message is written on stderr.
  *
  * The macro SET_SAFE_LJMP initialise the longjmp. The Macro
@@ -994,7 +994,7 @@
 	/* Copy data between the coroutines. */
 	lua_rawgeti(lua->T, LUA_REGISTRYINDEX, lua->Mref);
 	lua_xmove(lua->T, T, 1);
-	new_ref = luaL_ref(T, LUA_REGISTRYINDEX); /* Valur poped. */
+	new_ref = luaL_ref(T, LUA_REGISTRYINDEX); /* Value popped. */
 
 	/* Destroy old data. */
 	luaL_unref(lua->T, LUA_REGISTRYINDEX, lua->Mref);
diff --git a/src/http.c b/src/http.c
index 7278cad..937d4d0 100644
--- a/src/http.c
+++ b/src/http.c
@@ -288,7 +288,7 @@
 	"Cache-Control: no-cache\r\n"
 	"Content-Type: text/html\r\n"
 	"\r\n"
-	"<html><body><h1>500 Internal Server Error</h1>\nAn internal server error occured.\n</body></html>\n",
+	"<html><body><h1>500 Internal Server Error</h1>\nAn internal server error occurred.\n</body></html>\n",
 
 	[HTTP_ERR_502] =
 	"HTTP/1.1 502 Bad Gateway\r\n"
@@ -439,7 +439,7 @@
 	case 503: return "Service Unavailable";
 	case 504: return "Gateway Time-out";
 	case 505: return "HTTP Version not supported";
-	case 506: return "Variant also negociate";
+	case 506: return "Variant also negotiate";
 	case 507: return "Insufficient storage";
 	case 508: return "Loop detected";
 	case 509: return "Bandwidth Limit Exceeded";
@@ -691,7 +691,7 @@
 			att_end = equal;
 		}
 
-		/* here, <equal> points to '=', a delimitor or the end. <att_end>
+		/* here, <equal> points to '=', a delimiter or the end. <att_end>
 		 * is between <att_beg> and <equal>, both may be identical.
 		 */
 
@@ -705,7 +705,7 @@
 			/* find the end of the value, respecting quotes */
 			next = http_find_cookie_value_end(val_beg, hdr_end);
 
-			/* make val_end point to the first white space or delimitor after the value */
+			/* make val_end point to the first white space or delimiter after the value */
 			val_end = next;
 			while (val_end > val_beg && HTTP_IS_SPHT(*(val_end - 1)))
 				val_end--;
@@ -1010,7 +1010,7 @@
         /* Skip spaces between p2 and p3 */
         for (; p < end && HTTP_IS_SPHT(*p); p++);
 
-        /* The remaing is the third value */
+        /* The remaining is the third value */
         p3->ptr = p;
         p3->len = end - p;
 
diff --git a/src/http_ana.c b/src/http_ana.c
index 28377d6..f394f98 100644
--- a/src/http_ana.c
+++ b/src/http_ana.c
@@ -773,7 +773,7 @@
 		 * uri.ptr and path.ptr (excluded). If it was not found, we need
 		 * to replace from all the uri by a single "/".
 		 *
-		 * Instead of rewritting the whole start line, we just update
+		 * Instead of rewriting the whole start line, we just update
 		 * the star-line URI. Some space will be lost but it should be
 		 * insignificant.
 		 */
diff --git a/src/http_conv.c b/src/http_conv.c
index 390d85a..4afa6a2 100644
--- a/src/http_conv.c
+++ b/src/http_conv.c
@@ -119,7 +119,7 @@
 		if (al >= end)
 			break;
 
-		/* Start of the fisrt word. */
+		/* Start of the first word. */
 		token = al;
 
 		/* Look for separator: isspace(), ',' or ';'. Next value if 0 length word. */
diff --git a/src/http_fetch.c b/src/http_fetch.c
index 0d53afd..7f1af14 100644
--- a/src/http_fetch.c
+++ b/src/http_fetch.c
@@ -262,7 +262,7 @@
 			return NULL;
 		}
 
-		/* OK we just got a valid HTTP mesage. We have to convert it
+		/* OK we just got a valid HTTP message. We have to convert it
 		 * into an HTX message.
 		 */
 		if (unlikely(h1sl.rq.v.len == 0)) {
@@ -1726,7 +1726,7 @@
 /************************************************************************/
 
 /* This scans a URL-encoded query string. It takes an optionally wrapping
- * string whose first contigous chunk has its beginning in ctx->a[0] and end
+ * string whose first contiguous chunk has its beginning in ctx->a[0] and end
  * in ctx->a[1], and the optional second part in (ctx->a[2]..ctx->a[3]). The
  * pointers are updated for next iteration before leaving.
  */
@@ -1830,7 +1830,7 @@
 /* This function iterates over each parameter of the body. This requires
  * that the body has been waited for using http-buffer-request. It uses
  * ctx->a[0] and ctx->a[1] to store the beginning and end of the first
- * contigous part of the body, and optionally ctx->a[2..3] to reference the
+ * contiguous part of the body, and optionally ctx->a[2..3] to reference the
  * optional second part if the body wraps at the end of the buffer. An optional
  * parameter name is passed in args[0], otherwise any parameter is considered.
  */
diff --git a/src/htx.c b/src/htx.c
index f4eda3e..91acee5 100644
--- a/src/htx.c
+++ b/src/htx.c
@@ -235,7 +235,7 @@
 		ret = 1;
 	}
 	else if (delta > htx_free_space(htx)) {
-		/* There is not enought space to handle the expansion */
+		/* There is not enough space to handle the expansion */
 		ret = 0;
 	}
 	else if (blk->addr+sz == htx->tail_addr) {
diff --git a/src/mux_h2.c b/src/mux_h2.c
index beaf1a1..6ec8d27 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -1883,7 +1883,7 @@
 	return ret;
 }
 
-/* wake a specific stream and assign its conn_stream som CS_FL_* flags among
+/* wake a specific stream and assign its conn_stream some CS_FL_* flags among
  * CS_FL_ERR_PENDING and CS_FL_ERROR if needed. The stream's state
  * is automatically updated accordingly. If the stream is orphaned, it is
  * destroyed.
@@ -2829,7 +2829,7 @@
 			 * sending RST_STREAM (aborted stream).
 			 *
 			 * In addition, since our CLOSED streams always carry the
-			 * RST_RCVD bit, we don't want to accidently catch valid
+			 * RST_RCVD bit, we don't want to accidentally catch valid
 			 * frames for a closed stream, i.e. RST/PRIO/WU.
 			 */
 			h2s_error(h2s, H2_ERR_STREAM_CLOSED);
@@ -3100,7 +3100,7 @@
 			break;
 
 		case H2_FT_CONTINUATION:
-			/* RFC7540#6.10: CONTINUATION may only be preceeded by
+			/* RFC7540#6.10: CONTINUATION may only be preceded by
 			 * a HEADERS/PUSH_PROMISE/CONTINUATION frame. These
 			 * frames' parsers consume all following CONTINUATION
 			 * frames so this one is out of sequence.
@@ -6181,7 +6181,7 @@
 
 
 /****************************************/
-/* MUX initialization and instanciation */
+/* MUX initialization and instantiation */
 /***************************************/
 
 /* The mux operations */
diff --git a/src/mux_pt.c b/src/mux_pt.c
index bbfcf5b..9a96fb8 100644
--- a/src/mux_pt.c
+++ b/src/mux_pt.c
@@ -80,7 +80,7 @@
 /* Initialize the mux once it's attached. It is expected that conn->ctx
  * points to the existing conn_stream (for outgoing connections) or NULL (for
  * incoming ones, in which case one will be allocated and a new stream will be
- * instanciated). Returns < 0 on error.
+ * instantiated). Returns < 0 on error.
  */
 static int mux_pt_init(struct connection *conn, struct proxy *prx, struct session *sess,
 		       struct buffer *input)
@@ -148,7 +148,7 @@
 	}
 
 	/* If we had early data, and we're done with the handshake
-	 * then whe know the data are safe, and we can remove the flag.
+	 * then we know the data are safe, and we can remove the flag.
 	 */
 	if ((conn->flags & (CO_FL_EARLY_DATA | CO_FL_EARLY_SSL_HS | CO_FL_WAIT_XPRT)) ==
 	    CO_FL_EARLY_DATA)
diff --git a/src/peers.c b/src/peers.c
index 47582e4..fcea37e 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -2141,7 +2141,7 @@
 
 	/* if current peer is local */
 	if (peer->local) {
-		/* if current host need resyncfrom local and no process assined  */
+		/* if current host need resyncfrom local and no process assigned  */
 		if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
 		    !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
 			/* assign local peer for a lesson, consider lesson already requested */
@@ -2195,7 +2195,7 @@
 }
 
 /*
- * IO Handler to handle message exchance with a peer
+ * IO Handler to handle message exchange with a peer
  */
 static void peer_io_handler(struct appctx *appctx)
 {
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index d1e89e4..9f03096 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -1640,7 +1640,7 @@
 	return 1;
 }
 
-/* get the retrans counter on a client connexion */
+/* get the retrans counter on a client connection */
 static int
 smp_fetch_fc_retrans(const struct arg *args, struct sample *smp, const char *kw, void *private)
 {
diff --git a/src/regex.c b/src/regex.c
index 503be03..95da303 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -144,7 +144,7 @@
 
 	/* Silently limit the number of allowed matches. max
 	 * match i the maximum value for match, in fact this
-	 * limit is not applyied.
+	 * limit is not applied.
 	 */
 
 	enmatch = nmatch;
@@ -218,7 +218,7 @@
  * <subject> can be modified during the processing. If the function doesn't
  * match, it returns false, else it returns true.
  * When it is compiled with standard POSIX regex or PCRE, this function add
- * a temporary null chracters at the end of the <subject>. The <subject> must
+ * a temporary null characters at the end of the <subject>. The <subject> must
  * have a real length of <length> + 1. Currently the only supported flag is
  * REG_NOTBOL.
  */
@@ -238,7 +238,7 @@
 
 	/* Silently limit the number of allowed matches. max
 	 * match i the maximum value for match, in fact this
-	 * limit is not applyied.
+	 * limit is not applied.
 	 */
 	enmatch = nmatch;
 	if (enmatch > MAX_MATCH)
diff --git a/src/sample.c b/src/sample.c
index faf6471..e09b4c0 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -1034,7 +1034,7 @@
  *
  * Note: the fetch functions are required to properly set the return type. The
  * conversion functions must do so too. However the cast functions do not need
- * to since they're made to cast mutiple types according to what is required.
+ * to since they're made to cast multiple types according to what is required.
  *
  * The caller may indicate in <opt> if it considers the result final or not.
  * The caller needs to check the SMP_F_MAY_CHANGE flag in p->flags to verify
@@ -2772,7 +2772,7 @@
 	 * +------+----------+----------+
 	 */
 	if ((a ^ b) >= 0) {
-		/* signs are differents. */
+		/* signs are different. */
 		if (a < 0) {
 			if (LLONG_MIN - a > b)
 				return LLONG_MIN;
@@ -2849,7 +2849,7 @@
 	}
 
 	/* The multiply between LLONG_MIN and -1 returns a
-	 * "floting point exception".
+	 * "floating point exception".
 	 */
 	if (smp->data.u.sint == LLONG_MIN && tmp.data.u.sint == -1) {
 		smp->data.u.sint = LLONG_MAX;
@@ -2888,7 +2888,7 @@
 
 	if (tmp.data.u.sint) {
 		/* The divide between LLONG_MIN and -1 returns a
-		 * "floting point exception".
+		 * "floating point exception".
 		 */
 		if (smp->data.u.sint == LLONG_MIN && tmp.data.u.sint == -1) {
 			smp->data.u.sint = LLONG_MAX;
@@ -2916,7 +2916,7 @@
 
 	if (tmp.data.u.sint) {
 		/* The divide between LLONG_MIN and -1 returns a
-		 * "floting point exception".
+		 * "floating point exception".
 		 */
 		if (smp->data.u.sint == LLONG_MIN && tmp.data.u.sint == -1) {
 			smp->data.u.sint = 0;
diff --git a/src/sink.c b/src/sink.c
index e273df4..e8eef85 100644
--- a/src/sink.c
+++ b/src/sink.c
@@ -141,7 +141,7 @@
 }
 
 /* tries to send <nmsg> message parts (up to 8, ignored above) from message
- * array <msg> to sink <sink>. Formating according to the sink's preference is
+ * array <msg> to sink <sink>. Formatting according to the sink's preference is
  * done here. Lost messages are NOT accounted for. It is preferable to call
  * sink_write() instead which will also try to emit the number of dropped
  * messages when there are any. It returns >0 if it could write anything,
diff --git a/src/ssl_ckch.c b/src/ssl_ckch.c
index aa7361f..ec74c17 100644
--- a/src/ssl_ckch.c
+++ b/src/ssl_ckch.c
@@ -153,7 +153,7 @@
 
 #if ((defined SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB && !defined OPENSSL_NO_OCSP) || defined OPENSSL_IS_BORINGSSL)
 /*
- * This function load the OCSP Resonse in DER format contained in file at
+ * This function load the OCSP Response in DER format contained in file at
  * path 'ocsp_path' or base64 in a buffer <buf>
  *
  * Returns 0 on success, 1 in error case.
diff --git a/src/time.c b/src/time.c
index a6cfa8e..a665a85 100644
--- a/src/time.c
+++ b/src/time.c
@@ -169,7 +169,7 @@
  * An offset is used to adjust the current time (date), to have a monotonic time
  * (now). It must be global and thread-safe. But a timeval cannot be atomically
  * updated. So instead, we store it in a 64-bits integer (offset) whose 32 MSB
- * contain the signed seconds adjustment andthe 32 LSB contain the unsigned
+ * contain the signed seconds adjustment and the 32 LSB contain the unsigned
  * microsecond adjustment. We cannot use a timeval for this since it's never
  * clearly specified whether a timeval may hold negative values or not.
  */
diff --git a/src/tools.c b/src/tools.c
index f4f96a6..7f98acf 100644
--- a/src/tools.c
+++ b/src/tools.c
@@ -4518,7 +4518,7 @@
 
 /*
  * Allocate an array of unsigned int with <nums> as address from <str> string
- * made of integer sepereated by dot characters.
+ * made of integer separated by dot characters.
  *
  * First, initializes the value with <sz> as address to 0 and initializes the
  * array with <nums> as address to NULL. Then allocates the array with <nums> as
@@ -4733,7 +4733,7 @@
 		outpos++;					       \
 	} while (0)
 
-/* Parse <in>, copy it into <out> splitted into isolated words whose pointers
+/* Parse <in>, copy it into <out> split into isolated words whose pointers
  * are put in <args>. If more than <outlen> bytes have to be emitted, the
  * extraneous ones are not emitted but <outlen> is updated so that the caller
  * knows how much to realloc. Similarly, <args> are not updated beyond <nbargs>
diff --git a/src/vars.c b/src/vars.c
index fd95eed..49937fe 100644
--- a/src/vars.c
+++ b/src/vars.c
@@ -189,7 +189,7 @@
 	_HA_ATOMIC_SUB(&var_global_size, size);
 }
 
-/* This function init a list of variabes. */
+/* This function init a list of variables. */
 void vars_init(struct vars *vars, enum vars_scope scope)
 {
 	LIST_INIT(&vars->head);
