Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#855 closed task (complete)

upgrade asio to 1.4.8

Reported by: jelte Owned by: jelte
Priority: medium Milestone: Sprint-20110503
Component: Unclassified Version:
Keywords: Cc:
CVSS Scoring: Parent Tickets:
Sensitive: no Defect Severity: N/A
Sub-Project: DNS Feature Depending on Ticket:
Estimated Difficulty: 2.0 Add Hours to Ticket: 0
Total Hours: 0 Internal?: no

Description

summary should say it all (at the time of writing 1.4.8 is the most recent stable release)

Subtickets

Attachments (1)

asio.diff (30.2 KB) - added by jinmei 9 years ago.

Download all attachments as: .zip

Change History (12)

comment:1 Changed 9 years ago by jelte

  • Owner set to jelte
  • Status changed from new to assigned

comment:2 Changed 9 years ago by jelte

  • Owner changed from jelte to UnAssigned
  • Status changed from assigned to reviewing

With this version of asiolink, it seems to compile without local patches. One existing -Wno-strict-aliasing we had seems unnecessary now, but another aliasing warning got introduced (so i've added -fno-strict-aliasing there).

Also the include unistd.h in scan.cc is now unnecessary.

Please sanity check and/or build test this :)

comment:3 Changed 9 years ago by stephen

  • Milestone set to Sprint-20110503

comment:4 Changed 9 years ago by stephen

  • Defect Severity set to N/A
  • Owner changed from UnAssigned to stephen
  • Sub-Project set to DNS

comment:5 Changed 9 years ago by stephen

  • Owner changed from stephen to jelte

Looks OK - please merge.

It might we worth feeding back the "strict-aliasing" problem in asio/error_code.hpp to the maintainer.

comment:6 Changed 9 years ago by jinmei

As we saw it causes build failure with clang++:
http://bind10.isc.org/~tester/builder//BIND10/20110419071501-FreeBSD8-i386-Clang/logs/build.out

This is because ASIO declares some functions/methods inline, while providing its definition in the same "header file" (via #include) without specifying 'inline':

In foo_asio.hpp:
inline void foo();

// no 'inline here'
void foo() {
}

g++ seems to handle this case as an inline function, but clang++ seems to make a duplicate copy of it. I don't know which one is correct in terms of the languagee specification, but we can at least work this around by the attached (large but) straightforward patch to our ASIO copy.

Can I push this change to master?

Changed 9 years ago by jinmei

comment:7 Changed 9 years ago by jinmei

FYI: I've reported this to the ASIO bug data base.
https://sourceforge.net/tracker/?func=detail&aid=3291113&group_id=122478&atid=694037

But I don't think it will be fixed in the time frame of a few days
(and it's not even clear whether they agree with fixing it in ASIO),
so we need some measure in our side anyway.

comment:8 Changed 9 years ago by jinmei

Since many developers are going to be off for several days I've
applied the proposed patch anyway.
It's commit c32718be9f5409b6f72d98ddcd0b1ccd4c5c2293

It's a pretty independent patch (only affecting ext/asio), so we can
easily cancel it later if it turns out to be a bad idea.

comment:9 Changed 9 years ago by jelte

thanks!

comment:10 Changed 9 years ago by jelte

  • Resolution set to complete
  • Status changed from reviewing to closed

Looks ok to me, thanks again.

I've updated the README, with references to the commit and the report.

Closing ticket.

comment:11 Changed 9 years ago by jelte

  • Estimated Difficulty changed from 0.0 to 2
Note: See TracTickets for help on using tickets.