|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Eugene B. Berdnikov 2:5020/400 24 Feb 2002 15:03:33 To : Andrey Khavryuchenko Subject : Re: непонятки с getpeername в ipop3d -------------------------------------------------------------------------------- Andrey Khavryuchenko <akhavr@kds.com.ua> wrote: AK> "EBB" == Eugene B Berdnikov wrote: EBB>> Andrey Khavryuchenko <akhavr@kds.com.ua> wrote: AK>> С некоторого очередного обновления у меня в логах стали появляться такие AK>> сообщения: AK>> AK>> Feb 23 08:35:51 netmaster ipop3d[5800]: pop3 service init from 10.0.2.2 AK>> Feb 23 08:35:51 netmaster ipop3d[5800]: Login user=sbelinsk AK>> host=sveta.kds.priv [10.0.2.3] nmsgs=0/0 Feb 23 08:35:51 netmaster AK>> ipop3d[5800]: Logout user=sbelinsk host=sveta.kds.priv [10.0.2.3] nmsgs=0 AK>> ndele=0 Вопрос в источнике, выдающем адрес 10.0.2.2 в первой строке (адрес AK>> сервера). AK> EBB>> Подозреваю, что первая строчка содержит выдачу getsockname(), EBB>> а 2я и 3я - выдачу getpeername(). Т.е. это разные сущности. AK> AK> Увы, нет. Вхождение 'service init from' есть только в этой функции: [...] AK> char *client = AK> getpeername (0,(struct sockaddr *) &sin,(void *) &i) ? "UNKNOWN" : AK> ((sin.sin_family == AF_INET) ? inet_ntoa (sin.sin_addr) : AK> "NON-IPv4"); /* set server name in syslog */ AK> openlog (server,LOG_PID,LOG_MAIL); fclose (stderr); /* AK> possibly save a process ID */ dorc (NIL,NIL); /* do AK> systemwide configuration */ ^^^^^^^^^^^^^^ Есть подозрение, что в этом модуле inet_ntoa() вызывается еще раз, и его внутренний буфер затирается, после чего client показывает на строку, содержимое которой уже изменилось. AK> /* Use SSL if SSL service, or if server starts with "s" and not service AK> */ if (((port = tcp_serverport ()) >= 0)) { if ((sv = getservbyname AK> (service,"tcp")) && (port == ntohs (sv->s_port))) syslog AK> (LOG_DEBUG,"%s service init from %s",service,client); [...] Где C-шным по AK> фону написано, что client берется из getpeername. Попробуйте вывести inet_ntoa(sin.sin_addr) сразу после getpeername(). -- Eugene Berdnikov --- ifmail v.2.15dev5 * Origin: Institute for High Energy Physics, Protvino, Russia (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/53534224bc33.html, оценка из 5, голосов 10
|