[tor-bugs] #12088 [Pluggable transport]: goptlib should provide a method for querying the state location.
Tor Bug Tracker & Wiki
blackhole at torproject.org
Sat May 24 19:40:37 UTC 2014
#12088: goptlib should provide a method for querying the state location.
-------------------------------------+------------------------------
Reporter: yawning | Owner: dcf
Type: enhancement | Status: needs_review
Priority: normal | Milestone:
Component: Pluggable transport | Version:
Resolution: | Keywords: goptlib, library
Actual Points: | Parent ID:
Points: |
-------------------------------------+------------------------------
Comment (by yawning):
Replying to [comment:6 dcf]:
> Replying to [comment:5 yawning]:
> > I took your API/implementation and wrote the unit tests for it. For
the #6 test I did what path_test did and made sure that creating a
subdirectory of a file fails.
>
> Thank you very much. Can you also make a patch showing how this API
would be used in obfs4? I don't want it to be too cumbersome over
ClientInfo.StateLocation.
Something like this:
{{{
-func ptInitializeLogging(enable bool) {
+func ptInitializeLogging(enable bool) error {
if enable {
- dir, err := ptGetStateDir()
- if err != nil || dir == "" {
- return
+ // pt.MakeStateDir will ENV-ERROR for us.
+ dir, err := pt.MakeStateDir()
+ if err != nil {
+ return err
}
+ // While we could just exit, log an ENV-ERROR so it will
propagate to
+ // the tor log.
f, err := os.OpenFile(path.Join(dir, obfs4LogFile),
os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
- log.Fatalf("[ERROR] Failed to open log file: %s",
err)
+ envError := []byte(fmt.Sprintf("ENV-ERROR Failed
to open log file: %s", err))
+ pt.Stdout.Write(envError)
+ return err
}
log.SetOutput(f)
} else {
log.SetOutput(ioutil.Discard)
}
+
+ return nil
}
}}}
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/12088#comment:7>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list