merged linux permission issue fix from RC_0_16
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
* fix uTP edge case where udp socket buffer fills up
|
* fix uTP edge case where udp socket buffer fills up
|
||||||
* fix nagle implementation in uTP
|
* fix nagle implementation in uTP
|
||||||
|
|
||||||
|
* fix permissions issue on linux whith noatime enabled for non-owned files
|
||||||
* use random peer IDs in anonymous mode
|
* use random peer IDs in anonymous mode
|
||||||
* fix move_storage bugs
|
* fix move_storage bugs
|
||||||
* fix unnecessary dependency on boost.date_time when building boost.asio as separate compilation
|
* fix unnecessary dependency on boost.date_time when building boost.asio as separate compilation
|
||||||
|
22
src/file.cpp
22
src/file.cpp
@@ -980,9 +980,27 @@ namespace libtorrent
|
|||||||
{
|
{
|
||||||
mode &= ~no_buffer;
|
mode &= ~no_buffer;
|
||||||
m_fd = ::open(path.c_str()
|
m_fd = ::open(path.c_str()
|
||||||
, mode & (rw_mask | no_buffer), permissions);
|
, mode_array[mode & rw_mask]
|
||||||
}
|
#ifdef O_NOATIME
|
||||||
|
| no_atime_flag[(mode & no_atime) >> 4]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
, permissions);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef O_NOATIME
|
||||||
|
// O_NOATIME is not allowed for files we don't own
|
||||||
|
// so, if we get EPERM when we try to open with it
|
||||||
|
// try again without O_NOATIME
|
||||||
|
if (m_fd == -1 && (mode & no_atime) && errno == EPERM)
|
||||||
|
{
|
||||||
|
mode &= ~no_atime;
|
||||||
|
m_fd = ::open(path.c_str()
|
||||||
|
, mode_array[mode & rw_mask]
|
||||||
|
| no_buffer_flag[(mode & no_buffer) >> 2]
|
||||||
|
, permissions);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
if (m_fd == -1)
|
if (m_fd == -1)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user