Skip to content

Commit fe80a52

Browse files
Jérôme Lebelhanumantmk
authored andcommitted
Improved warnings on failure to connect
Adding a warning (with the error message) when can't connect to a host. And adding the host name into the error message when failed. Closes #91
1 parent 11dbdc8 commit fe80a52

File tree

7 files changed

+59
-4
lines changed

7 files changed

+59
-4
lines changed

build/autotools/versions.ldscript

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ LIBMONGOC_1.1 {
234234
mongoc_rand_add;
235235
mongoc_rand_seed;
236236
mongoc_rand_status;
237+
mongoc_socket_inet_ntop
237238
mongoc_uri_get_credentials;
238239
mongoc_uri_get_mechanism_properties;
239240
} LIBMONGOC_1.0;

build/cmake/libmongoc-ssl.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ mongoc_socket_destroy
170170
mongoc_socket_errno
171171
mongoc_socket_getnameinfo
172172
mongoc_socket_getsockname
173+
mongoc_socket_inet_ntop
173174
mongoc_socket_listen
174175
mongoc_socket_new
175176
mongoc_socket_recv

build/cmake/libmongoc.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ mongoc_socket_destroy
168168
mongoc_socket_errno
169169
mongoc_socket_getnameinfo
170170
mongoc_socket_getsockname
171+
mongoc_socket_inet_ntop
171172
mongoc_socket_listen
172173
mongoc_socket_new
173174
mongoc_socket_recv

src/libmongoc.symbols

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ mongoc_socket_destroy
169169
mongoc_socket_errno
170170
mongoc_socket_getnameinfo
171171
mongoc_socket_getsockname
172+
mongoc_socket_inet_ntop
172173
mongoc_socket_listen
173174
mongoc_socket_new
174175
mongoc_socket_recv

src/mongoc/mongoc-client.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,16 @@ mongoc_client_connect_tcp (const mongoc_uri_t *uri,
142142
rp->ai_addr,
143143
(socklen_t)rp->ai_addrlen,
144144
expire_at)) {
145+
char *errmsg;
145146
char errmsg_buf[32];
146-
const char * errmsg;
147-
148-
errmsg = bson_strerror_r (mongoc_socket_errno (sock), errmsg_buf, sizeof errmsg_buf);
149-
MONGOC_WARNING ("Failed to connect, error: %d, %s\n",
147+
char ip[255];
148+
149+
mongoc_socket_inet_ntop (rp, ip, sizeof ip);
150+
errmsg = bson_strerror_r (
151+
mongoc_socket_errno (sock), errmsg_buf, sizeof errmsg_buf);
152+
MONGOC_WARNING ("Failed to connect to: %s:%d, error: %d, %s\n",
153+
ip,
154+
host->port,
150155
mongoc_socket_errno(sock),
151156
errmsg);
152157
mongoc_socket_destroy (sock);

src/mongoc/mongoc-socket.c

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,3 +1094,46 @@ mongoc_socket_check_closed (mongoc_socket_t *sock) /* IN */
10941094

10951095
return closed;
10961096
}
1097+
1098+
/*
1099+
*
1100+
*--------------------------------------------------------------------------
1101+
*
1102+
* mongoc_socket_inet_ntop --
1103+
*
1104+
* Convert the ip from addrinfo into a c string.
1105+
*
1106+
* Returns:
1107+
* The value is returned into 'buffer'. The memory has to be allocated
1108+
* by the caller
1109+
*
1110+
* Side effects:
1111+
* None.
1112+
*
1113+
*--------------------------------------------------------------------------
1114+
*/
1115+
1116+
void
1117+
mongoc_socket_inet_ntop (struct addrinfo *rp, /* IN */
1118+
char *buf, /* INOUT */
1119+
size_t buflen) /* IN */
1120+
{
1121+
void *ptr;
1122+
char tmp[256];
1123+
1124+
switch (rp->ai_family) {
1125+
case AF_INET:
1126+
ptr = &((struct sockaddr_in *)rp->ai_addr)->sin_addr;
1127+
inet_ntop (rp->ai_family, ptr, tmp, sizeof (tmp));
1128+
bson_snprintf (buf, buflen, "ipv4 %s", tmp);
1129+
break;
1130+
case AF_INET6:
1131+
ptr = &((struct sockaddr_in6 *)rp->ai_addr)->sin6_addr;
1132+
inet_ntop (rp->ai_family, ptr, tmp, sizeof (tmp));
1133+
bson_snprintf (buf, buflen, "ipv6 %s", tmp);
1134+
break;
1135+
default:
1136+
bson_snprintf (buf, buflen, "unknown ip %d", rp->ai_family);
1137+
break;
1138+
}
1139+
}

src/mongoc/mongoc-socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ ssize_t mongoc_socket_sendv (mongoc_socket_t *sock,
8787
size_t iovcnt,
8888
int64_t expire_at);
8989
bool mongoc_socket_check_closed (mongoc_socket_t *sock);
90+
void mongoc_socket_inet_ntop (struct addrinfo *rp,
91+
char *buf,
92+
size_t buflen);
9093

9194

9295
BSON_END_DECLS

0 commit comments

Comments
 (0)